dpaste/Dockerfile
2024-07-05 07:45:47 +00:00

57 lines
1.5 KiB
Docker
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

FROM node:lts as staticfiles
ARG BUILD_EXTRAS=production
RUN echo "\n Building staticfiles with "${BUILD_EXTRAS}" dependencies.\n"
WORKDIR /app
# Install the JS dependencies
COPY package.json package-lock.json Makefile ./
RUN if [ "$BUILD_EXTRAS" = "dev" ] ; then npm install --ignore-scripts ; else npm ci --ignore-scripts ; fi
# Copy the client/ directory and compile them. The Python application
# doesn't need to exist yet.
COPY client ./client
RUN mkdir -p dpaste/static
RUN make css
RUN make js
# ------------------------------------------------
FROM python:3.12 as build
ARG BUILD_EXTRAS=production
ENV PORT=8000
RUN echo "\n Building Django project with "${BUILD_EXTRAS}" dependencies.\n"
WORKDIR /app
# Upgrade pip, the Image one is quite old.
RUN pip install -U pip
# Copy the dpaste staticfiles to this image
COPY --from=staticfiles /app /app/
# Copy only the files necessary to install the dpaste project as an editable
# package. This improves caching.
COPY setup.py setup.cfg ./
COPY dpaste/__init__.py dpaste/
RUN pip install -e .[${BUILD_EXTRAS}]
# Copy the rest of the application code
COPY . .
# Collect all static files once.
RUN ./manage.py collectstatic --noinput
# By default run it with pyuwsgi, which is a great production ready
# server. For development, docker-compose will override it to use the
# regular Django runserver.
CMD ./manage.py migrate --noinput && ./manage.py pyuwsgi --http=:${PORT} --logger file:/var/log/uwsgi.log
EXPOSE ${PORT}