diff options
Diffstat (limited to 'Dockerfile')
| -rw-r--r-- | Dockerfile | 37 |
1 files changed, 24 insertions, 13 deletions
| @@ -1,27 +1,38 @@ | |||
| 1 | FROM python:3.10-alpine AS base | 1 | FROM ghcr.io/astral-sh/uv:python3.14-alpine AS builder |
| 2 | |||
| 3 | ENV UV_COMPILE_BYTECODE=1 | ||
| 4 | ENV UV_LINK_MODE=copy | ||
| 5 | ENV UV_NO_DEV=1 | ||
| 6 | ENV UV_TOOL_BIN_DIR=/usr/local/bin | ||
| 7 | ENV UV_PYTHON_DOWNLOADS=0 | ||
| 2 | 8 | ||
| 3 | RUN mkdir -p /app | ||
| 4 | WORKDIR /app | 9 | WORKDIR /app |
| 10 | RUN --mount=type=cache,target=/root/.cache/uv \ | ||
| 11 | --mount=type=bind,source=uv.lock,target=uv.lock \ | ||
| 12 | --mount=type=bind,source=pyproject.toml,target=pyproject.toml \ | ||
| 13 | uv sync --locked --no-install-project | ||
| 5 | 14 | ||
| 6 | FROM base AS build | 15 | COPY . /app |
| 16 | RUN --mount=type=cache,target=/root/.cache/uv \ | ||
| 17 | uv sync --locked | ||
| 7 | 18 | ||
| 8 | RUN mkdir /buildroot | ||
| 9 | RUN apk add gcc make musl-dev | ||
| 10 | RUN pip install --upgrade pip | ||
| 11 | 19 | ||
| 12 | COPY requirements.txt . | 20 | FROM python:3.14-alpine |
| 13 | RUN pip install -r requirements.txt --root /buildroot | ||
| 14 | 21 | ||
| 15 | FROM base | 22 | RUN addgroup -S -g 10001 nonroot \ |
| 23 | && adduser -S -G nonroot -u 10001 -h /home/nonroot nonroot | ||
| 16 | 24 | ||
| 17 | COPY --from=build /buildroot / | 25 | COPY --from=builder --chown=nonroot:nonroot /app /app |
| 26 | ENV PATH="/app/.venv/bin:$PATH" | ||
| 18 | 27 | ||
| 19 | COPY . . | 28 | WORKDIR /app |
| 20 | ARG DOCKER_METADATA_OUTPUT_VERSION | 29 | ARG DOCKER_METADATA_OUTPUT_VERSION |
| 21 | RUN echo "version='$DOCKER_METADATA_OUTPUT_VERSION'" > ttun_server/_version.py | 30 | RUN echo "version='$DOCKER_METADATA_OUTPUT_VERSION'" > ttun_server/_version.py |
| 22 | 31 | ||
| 23 | ENV TUNNEL_DOMAIN= | 32 | ENV TUNNEL_DOMAIN='' |
| 24 | ENV SECURE True | 33 | ENV SECURE=True |
| 25 | EXPOSE 8000 | 34 | EXPOSE 8000 |
| 26 | 35 | ||
| 36 | USER nonroot | ||
| 37 | |||
| 27 | CMD ["uvicorn", "ttun_server:server", "--host", "0.0.0.0", "--port", "8000"] | 38 | CMD ["uvicorn", "ttun_server:server", "--host", "0.0.0.0", "--port", "8000"] |
