You've already forked RekomenciBackend
71 lines
1.4 KiB
Docker
71 lines
1.4 KiB
Docker
# =====
|
|
# > Python-Base
|
|
# =====
|
|
|
|
FROM python:3.13-slim-bookworm AS python-base
|
|
|
|
ENV PYTHONUNBUFFERED=1 \
|
|
PYTHONDONTWRITEBYTECODE=1 \
|
|
PYTHONOPTIMIZE=1 \
|
|
PIP_NO_CACHE_DIR=1 \
|
|
PIP_DISABLE_PIP_VERSION_CHECK=1 \
|
|
PIP_DEFAULT_TIMEOUT=100 \
|
|
APP_PATH="/app" \
|
|
UV_VERSION="0.8.19"
|
|
|
|
ENV \
|
|
VIRTUAL_ENV="$APP_PATH/.venv" \
|
|
PATH="$VIRTUAL_ENV/bin:$PATH" \
|
|
PROJECT_PATH="$APP_PATH/src/template_project"
|
|
|
|
WORKDIR $APP_PATH
|
|
|
|
# =====
|
|
# > Builder
|
|
# =====
|
|
|
|
FROM python-base AS template_project_builder
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends gcc git \
|
|
&& rm -rf /var/lib/apt/lists
|
|
|
|
RUN pip install --no-cache-dir "uv==$UV_VERSION"
|
|
RUN mkdir -p ./src/
|
|
|
|
COPY pyproject.toml $APP_PATH/pyproject.toml
|
|
RUN uv venv -p 3.13 && uv pip install -e .
|
|
COPY ./src/template_project $PROJECT_PATH
|
|
|
|
# =====
|
|
# > Deploy
|
|
# =====
|
|
|
|
FROM template_project_builder AS template_project_deploy
|
|
|
|
COPY --from=template_project_builder $VIRTUAL_ENV $VIRTUAL_ENV
|
|
|
|
# =====
|
|
# > Tests
|
|
# =====
|
|
|
|
FROM template_project_builder AS template_project_tests
|
|
|
|
COPY --from=template_project_builder $VIRTUAL_ENV $VIRTUAL_ENV
|
|
|
|
RUN uv pip install --group tests
|
|
|
|
COPY ./tests $APP_PATH/tests
|
|
|
|
# =====
|
|
# > Migrations
|
|
# =====
|
|
|
|
FROM template_project_builder AS template_project_migrations
|
|
|
|
COPY --from=template_project_builder $VIRTUAL_ENV $VIRTUAL_ENV
|
|
|
|
VOLUME $PROJECT_PATH/migrations
|
|
|
|
RUN uv pip install --group migrations
|