All checks were successful
Build Docker / Build Image (push) Successful in 1m11s
33 lines
788 B
Docker
33 lines
788 B
Docker
### Build stage ###
|
|
FROM python:3.13-alpine AS build
|
|
COPY --from=ghcr.io/astral-sh/uv:0.8.21 /uv /uvx /bin/
|
|
ENV UV_PROJECT_ENVIRONMENT=/app/.venv
|
|
|
|
WORKDIR /app
|
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
|
--mount=type=bind,source=uv.lock,target=uv.lock \
|
|
--mount=type=bind,source=pyproject.toml,target=pyproject.toml \
|
|
uv sync --frozen --no-dev --no-install-workspace
|
|
|
|
### Runtime stage ###
|
|
FROM python:3.13-alpine AS runtime
|
|
ENV PATH="/app/.venv/bin:$PATH"
|
|
|
|
# Install curl for healthchecks
|
|
RUN apk add --no-cache curl
|
|
WORKDIR /app
|
|
|
|
# Copy the virtual environment from build stage
|
|
COPY --from=build /app/.venv /app/.venv
|
|
|
|
# Copy all top-level Python files
|
|
COPY . /app
|
|
|
|
# Optional mount for data
|
|
ENV BASE_DIR=/mnt
|
|
VOLUME /mnt
|
|
|
|
EXPOSE 5000
|
|
|
|
ENTRYPOINT ["python3", "main.py"]
|