Skip to content

Commit

Permalink
feat(#2737): Update Dockerfile and start.sh with poetry instructions
Browse files Browse the repository at this point in the history
  • Loading branch information
pbanaszkiewicz committed Feb 16, 2025
1 parent d8db0ff commit 554dc2e
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 21 deletions.
29 changes: 18 additions & 11 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
# ----------------------------------
# BASE IMAGE: slim debian bullseye
# ----------------------------------
FROM python:3.12-slim-bullseye AS base
FROM python:3.12-slim AS base

# security updates
RUN apt-get update && apt-get -y upgrade && apt-get install -y --no-install-recommends libpq5
Expand All @@ -15,21 +15,21 @@ RUN apt-get update && apt-get -y upgrade && apt-get install -y --no-install-reco
# ----------------------------------
FROM base AS dependencies

RUN apt-get install -y --no-install-recommends libpq-dev gcc libstdc++-10-dev
RUN python3 -m pip install pipenv
RUN apt-get install -y --no-install-recommends libpq-dev gcc
RUN python3 -m pip install pipx
RUN python3 -m pipx ensurepath
RUN pipx install poetry==2.0.0
RUN mkdir /app
RUN mkdir /venv

# venv will exist under `/venv/amy`
ENV PIPENV_DONT_LOAD_ENV=true
ENV PIPENV_VENV_IN_PROJECT=false
ENV PIPENV_CUSTOM_VENV_NAME=amy
ENV WORKON_HOME=/venv
# venv will exist under `/venv/...`
ENV POETRY_VIRTUALENVS_PATH=/venv
WORKDIR /app
COPY . .

# install runtime dependencies
RUN pipenv sync
RUN /root/.local/bin/poetry sync
# RUN /root/.local/bin/poetry config --list && exit 1


# ----------------------------------
Expand All @@ -50,27 +50,34 @@ RUN npm install
# ----------------------------------
FROM base AS staticfiles

COPY --from=dependencies /root/.local/share/pipx/venvs /root/.local/share/pipx/venvs
COPY --from=dependencies /root/.local/bin /root/.local/bin
COPY --from=dependencies /venv /venv
COPY --from=dependencies /app /app
COPY --from=node_dependencies /app/node_modules /app/node_modules

ENV DJANGO_SETTINGS_MODULE=config.settings
ENV POETRY_VIRTUALENVS_PATH=/venv
WORKDIR /app
RUN /venv/amy/bin/python manage.py collectstatic --no-input
RUN /root/.local/bin/poetry run python manage.py collectstatic --no-input


# ----------------------------------
# RELEASE STAGE
# ----------------------------------
FROM base AS release

COPY --from=dependencies /root/.local/share/pipx/venvs /root/.local/share/pipx/venvs
COPY --from=dependencies /root/.local/bin /root/.local/bin
COPY --from=dependencies /venv /venv
COPY --from=staticfiles /app /app
COPY --from=node_dependencies /app/node_modules /app/node_modules

WORKDIR /app
EXPOSE 80

ENV PATH="${PATH}:/venv/amy/bin"
ENV DJANGO_SETTINGS_MODULE=config.settings
ENV POETRY_VIRTUALENVS_PATH=/venv
ENV PATH="${PATH}:/root/.local/bin/"
RUN chmod +x ./start.sh
CMD ["./start.sh"]
21 changes: 11 additions & 10 deletions start.sh
Original file line number Diff line number Diff line change
@@ -1,20 +1,21 @@
#!/bin/bash

/venv/amy/bin/python manage.py check --fail-level WARNING
ls -l /root/.local/bin
/root/.local/bin/poetry run python manage.py check --fail-level WARNING

/venv/amy/bin/python manage.py migrate
/root/.local/bin/poetry run python manage.py migrate

/venv/amy/bin/python manage.py createcachetable
/root/.local/bin/poetry run python manage.py createcachetable

/venv/amy/bin/python manage.py runscript seed_badges
/venv/amy/bin/python manage.py runscript seed_communityroles
/venv/amy/bin/python manage.py runscript seed_training_requirements
/venv/amy/bin/python manage.py runscript seed_involvements
/venv/amy/bin/python manage.py runscript seed_emails
/root/.local/bin/poetry run python manage.py runscript seed_badges
/root/.local/bin/poetry run python manage.py runscript seed_communityroles
/root/.local/bin/poetry run python manage.py runscript seed_training_requirements
/root/.local/bin/poetry run python manage.py runscript seed_involvements
/root/.local/bin/poetry run python manage.py runscript seed_emails

/venv/amy/bin/python manage.py create_superuser
/root/.local/bin/poetry run python manage.py create_superuser

/venv/amy/bin/gunicorn \
/root/.local/bin/poetry run gunicorn \
--workers=4 \
--bind=0.0.0.0:80 \
--access-logfile - \
Expand Down

0 comments on commit 554dc2e

Please sign in to comment.