commit 7a6c7c0397c6ea6ffa5ef8f2aa3d7194b93999ab
parent cde23044b6b4455ecb237e2cda2d49f95d999c99
Author: Andy Khramtsov <>
Date: Thu, 28 May 2026 04:59:55 +0300
build: add containerfile
Diffstat:
2 files changed, 65 insertions(+), 0 deletions(-)
diff --git a/.containerignore b/.containerignore
@@ -0,0 +1,36 @@
+# Git
+.git
+.gitignore
+
+# Python virtual environments & packages
+.venv
+venv
+ENV
+env
+*.egg-info
+.eggs
+
+# Python caches
+__pycache__/
+*.pyc
+*.pyo
+*.pyd
+.pytest_cache/
+.ruff_cache/
+.mypy_cache/
+
+# Local configuration & environment secrets
+.env
+*.env
+.secrets
+.idea/
+.vscode/
+
+# Build and CI artifacts
+build/
+dist/
+.github/
+.gitlab-ci.yml
+
+# UV specific local cache (if any exists outside container mount)
+.uv
diff --git a/Containerfile b/Containerfile
@@ -0,0 +1,29 @@
+FROM ghcr.io/astral-sh/uv:python3.14-alpine AS builder
+ENV UV_COMPILE_BYTECODE=1 UV_LINK_MODE=copy
+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-install-project --no-dev
+
+COPY . /app
+
+RUN --mount=type=cache,target=/root/.cache/uv \
+ uv sync --frozen --no-dev
+
+FROM python:3.14-alpine
+
+RUN apk add --no-cache graphviz
+
+WORKDIR /app
+
+COPY --from=builder /app/.venv /app/.venv
+COPY . /app
+
+ENV PYTHONUNBUFFERED=1 \
+ PATH="/app/.venv/bin:$PATH"
+
+EXPOSE 8000
+
+CMD ["python", "src/deps/dash_app.py"]
+