[feat] add docker

This commit is contained in:
Azamat 2026-03-20 22:44:46 +03:00
parent 67bdc287e9
commit 0829ad6c12
2 changed files with 67 additions and 0 deletions

35
Dockerfile Normal file
View file

@ -0,0 +1,35 @@
FROM python:3.13-slim AS build
ENV UV_LINK_MODE=copy
WORKDIR /app
RUN python -m pip install --no-cache-dir uv
COPY pyproject.toml uv.lock ./
RUN uv sync --locked --no-dev --no-install-project
FROM python:3.13-slim AS run
ENV PATH="/app/.venv/bin:${PATH}" \
PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
VIRTUAL_ENV=/app/.venv
WORKDIR /app
RUN useradd --system --create-home --shell /usr/sbin/nologin appuser
COPY --from=build --chown=appuser:appuser /app/.venv /app/.venv
COPY --chown=appuser:appuser adapter /app/adapter
COPY --chown=appuser:appuser config /app/config
COPY --chown=appuser:appuser domain /app/domain
COPY --chown=appuser:appuser repository /app/repository
COPY --chown=appuser:appuser usecase /app/usecase
COPY --chown=appuser:appuser main.py /app/main.py
USER appuser
EXPOSE 8123
CMD ["python", "main.py"]

32
docker-compose.yml Normal file
View file

@ -0,0 +1,32 @@
services:
app:
build:
context: .
dockerfile: Dockerfile
target: run
depends_on:
- otel-collector
environment:
APP_API_TOKEN: ${APP_API_TOKEN:?APP_API_TOKEN is required}
APP_SIGNING_KEY: ${APP_SIGNING_KEY:?APP_SIGNING_KEY is required}
APP_ENV: docker
APP_HTTP_HOST: 0.0.0.0
APP_HTTP_PORT: '8123'
APP_LOGGING_OUTPUT: otel
APP_METRICS_ENABLED: 'true'
APP_TRACING_ENABLED: 'true'
APP_OTEL_LOGS_ENDPOINT: http://otel-collector:4318/v1/logs
APP_OTEL_METRICS_ENDPOINT: http://otel-collector:4318/v1/metrics
APP_OTEL_TRACES_ENDPOINT: http://otel-collector:4318/v1/traces
ports:
- '127.0.0.1:8123:8123'
otel-collector:
image: grafana/otel-lgtm:latest
ports:
- '127.0.0.1:3000:3000'
volumes:
- lgtm-data:/data
volumes:
lgtm-data: