41 lines
1.1 KiB
Docker
41 lines
1.1 KiB
Docker
FROM python:3.11-slim AS base
|
|
|
|
ENV PYTHONDONTWRITEBYTECODE 1
|
|
ENV USERNAME "secretsanta"
|
|
ENV APP_HOME "/home/$USERNAME"
|
|
ENV APP_PATH "$APP_HOME/src"
|
|
|
|
ARG uid=1000
|
|
ARG gid=1000
|
|
|
|
# hadolint ignore=DL3001,DL3008
|
|
RUN apt-get -y update \
|
|
&& apt-get -y upgrade \
|
|
&& apt-get -y install git curl make python3-virtualenv --no-install-recommends \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& groupadd -g "$gid" "$USERNAME" \
|
|
&& useradd -lu "$uid" -g "$gid" "$USERNAME" \
|
|
&& mkhomedir_helper "$USERNAME" \
|
|
&& mkdir "$APP_PATH" \
|
|
&& chown "$uid:$gid" "$APP_PATH"
|
|
|
|
USER "$USERNAME"
|
|
ENV PATH="${PATH}:$APP_HOME/.local/bin"
|
|
ENV PYTHONPATH "$APP_PATH"
|
|
|
|
RUN pip install pipx==1.2.0 --no-cache-dir \
|
|
&& pipx install pdm==2.10
|
|
|
|
WORKDIR "$APP_PATH"
|
|
ENV POETRY_VIRTUALENVS_IN_PROJECT=1
|
|
COPY --chown="$USERNAME" pyproject.toml pdm.lock Makefile README.md LICENSE ./
|
|
COPY --chown="$USERNAME" apps/ apps/
|
|
COPY --chown="$USERNAME" secretsanta/ secretsanta/
|
|
|
|
RUN pdm install
|
|
|
|
FROM base AS run
|
|
|
|
RUN pdm install -G litestar
|
|
WORKDIR "$APP_PATH/apps/http/litestar"
|
|
CMD ["pdm", "run", "litestar", "run"]
|