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