FROM python:3.11-slim-bookworm AS install-dependencies # create and set main app directory WORKDIR /app # set virtual env path ENV \ PATH=/venv/bin:$PATH # install sys libs and create virtual env RUN \ apt update && \ apt install -y gcc libpq-dev python3-dev && \ python -m venv /venv # copy app files to /app directory COPY ./app/requirements.txt . # install dependencies && cleanup RUN \ pip install -r requirements.txt FROM python:3.11-slim-bookworm # uid to run application ARG USER=1000 # gid to run application ARG USER_GROUP=1000 # set virtual env path ENV \ PATH=/venv/bin:$PATH # does nothing, for documentation only EXPOSE 3000 # create and set main app directory WORKDIR /app COPY --from=install-dependencies /venv /venv # copy app files to /app directory COPY ./app . # set permissions to log directory RUN chown -R ${USER}:${USER_GROUP} /app/log # set user to run application USER ${USER}:${USER_GROUP} # start shell script when container starts ENTRYPOINT ["/app/run.sh"] # no additional parameters to run.sh script CMD []