1- FROM python:3.10-slim
1+ FROM python:3.11.5-alpine
22
33{% if from_ccsteam %} LABEL Maintainer="eXpress Unlimited Production"{% endif %}
44
5- ENV PYTHONUNBUFFERED 1
6- ENV UVICORN_CMD_ARGS ""
7-
8- EXPOSE 8000
9-
105# Install system-wide dependencies
11- RUN apt-get update && \
12- apt-get install --no-install-recommends -y git curl gcc && \
13- python3 -m pip install setuptools && \
14- apt-get clean autoclean && \
15- apt-get autoremove --yes && \
16- rm -rf /var/lib/apt/lists/*
6+ RUN apk update && \
7+ apk add --no-cache --clean-protected git curl gcc python3-dev && \
8+ rm -rf /var/cache/apk/*
179
1810# Create user for app
1911ENV APP_USER=appuser
20- RUN useradd --create-home $APP_USER
12+ RUN adduser -D $APP_USER
2113WORKDIR /home/$APP_USER
2214USER $APP_USER
2315
16+ # Set python env vars
17+ ENV PYTHONUNBUFFERED 1
18+ ENV PYTHONNODEBUGRANGES 1
19+ ENV PYTHONDONTWRITEBYTECODE 1
20+ ENV PYTHONPATH="/home/$APP_USER:$PYTHONPATH"
21+
2422# Use venv directly via PATH
2523ENV VENV_PATH=/home/$APP_USER/.venv/bin
2624ENV USER_PATH=/home/$APP_USER/.local/bin
2725ENV PATH="$VENV_PATH:$USER_PATH:$PATH"
2826
29- RUN pip install --user --no-cache-dir poetry==1.2.2 && \
30- poetry config virtualenvs.in-project true
27+ # Set app env vars
28+ ENV GUNICORN_CMD_ARGS ""
29+
30+ # Set build env vars
31+ ARG CI_COMMIT_SHA=""
32+ ENV GIT_COMMIT_SHA=${CI_COMMIT_SHA}
33+
34+ RUN pip install --user --no-cache-dir poetry==1.4.2 && \
35+ poetry config virtualenvs.in-project true
3136
3237COPY poetry.lock pyproject.toml ./
3338
@@ -38,17 +43,16 @@ ARG GIT_PASSWORD=${CI_JOB_TOKEN}
3843ARG GIT_LOGIN="gitlab-ci-token"
3944# Poetry can't read password to download private repos
4045RUN echo -e "machine ${GIT_HOST}\nlogin ${GIT_LOGIN}\npassword ${GIT_PASSWORD}" > ~/.netrc && \
41- poetry install --only main && \
42- rm -rf ~/.netrc
46+ poetry install --only main && \
47+ rm -rf ~/.netrc
4348{% else %}
4449RUN poetry install --only main
4550{% endif %}
4651
4752COPY alembic.ini .
4853COPY app app
4954
50- ARG CI_COMMIT_SHA=""
51- ENV GIT_COMMIT_SHA=${CI_COMMIT_SHA}
55+ EXPOSE 8000
5256
5357CMD alembic upgrade head && \
54- gunicorn "app.main:get_application()" --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0
58+ gunicorn "app.main:get_application()" --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0 $GUNICORN_CMD_ARGS
0 commit comments