105 lines
2.3 KiB
Text
105 lines
2.3 KiB
Text
# stage 1
|
|
FROM python:3.9-bullseye as backend
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
vim \
|
|
curl \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /app
|
|
RUN mkdir /app/src
|
|
RUN mkdir /app/logs
|
|
RUN mkdir /app/media
|
|
|
|
COPY ./requirements /app/requirements
|
|
|
|
RUN pip install -r requirements/production.txt
|
|
|
|
|
|
# stage 2
|
|
FROM node:current-bullseye AS frontend-build
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
git \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /app
|
|
|
|
COPY ./build /app/build/
|
|
COPY ./*.json ./*.js ./.babelrc /app/
|
|
|
|
RUN npm ci
|
|
|
|
COPY ./src /app/src
|
|
|
|
RUN npm run build
|
|
|
|
|
|
# stage 3
|
|
FROM python:3.9-bullseye as production
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
postgresql-client \
|
|
vim \
|
|
curl \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /app
|
|
|
|
RUN mkdir /app/logs
|
|
RUN mkdir /app/media
|
|
RUN mkdir /app/bin
|
|
|
|
COPY --from=backend /usr/local/lib/python3.9 /usr/local/lib/python3.9
|
|
COPY --from=backend /usr/local/bin/gunicorn /usr/local/bin/gunicorn
|
|
COPY --from=backend /usr/local/bin/celery /usr/local/bin/celery
|
|
COPY --from=backend /app/src/ /app/src/
|
|
COPY ./bin/docker-entrypoint.sh /app/bin/docker-entrypoint.sh
|
|
|
|
COPY --from=frontend-build /app/src/newsreader/static /app/src/newsreader/static
|
|
|
|
COPY ./src /app/src
|
|
|
|
RUN useradd -M -u 1000 newsreader
|
|
RUN chown -R newsreader:newsreader /app
|
|
|
|
USER newsreader
|
|
|
|
ARG COMMIT_HASH
|
|
ARG RELEASE=latest
|
|
|
|
ENV RELEASE=${RELEASE} \
|
|
GIT_SHA=${COMMIT_HASH} \
|
|
PYTHONUNBUFFERED=1 \
|
|
DJANGO_SETTINGS_MODULE=newsreader.conf.production
|
|
|
|
ARG SECRET_KEY=dummy
|
|
|
|
RUN python src/manage.py collectstatic --noinput \
|
|
&& python src/manage.py compilemessages
|
|
|
|
|
|
# (optional) stage 4
|
|
FROM python:3.9-bullseye as development
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
vim \
|
|
curl \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /app
|
|
|
|
RUN mkdir /app/bin
|
|
|
|
COPY ./requirements /app/requirements
|
|
COPY ./bin/docker-entrypoint.sh /app/bin/docker-entrypoint.sh
|
|
COPY --from=backend /usr/local/lib/python3.9 /usr/local/lib/python3.9
|
|
COPY --from=backend /usr/local/bin/celery /usr/local/bin/celery
|
|
COPY --from=backend /app/src/ /app/src/
|
|
|
|
RUN pip install -r requirements/production.txt -r requirements/development.txt
|
|
|
|
RUN useradd -M -u 1000 newsreader
|
|
RUN chown -R newsreader:newsreader /app
|
|
|
|
USER newsreader
|