30 lines
875 B
Docker
30 lines
875 B
Docker
# syntax=docker/dockerfile:1
|
|
# Образ сервиса админки (FastAPI + Jinja2/HTMX).
|
|
FROM python:3.12-slim
|
|
|
|
ENV PYTHONUNBUFFERED=1 \
|
|
PYTHONDONTWRITEBYTECODE=1 \
|
|
PIP_NO_CACHE_DIR=1 \
|
|
PIP_DISABLE_PIP_VERSION_CHECK=1
|
|
|
|
WORKDIR /app
|
|
|
|
# Непривилегированный пользователь
|
|
RUN useradd --create-home --uid 1000 app
|
|
|
|
COPY requirements-admin.txt ./
|
|
RUN pip install --no-cache-dir -r requirements-admin.txt
|
|
|
|
COPY common ./common
|
|
COPY admin ./admin
|
|
|
|
USER app
|
|
|
|
EXPOSE 8000
|
|
|
|
# Живость процесса: HTTP-проверка /healthz (порт берётся из ADMIN_PORT).
|
|
HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 \
|
|
CMD python -c "import os,urllib.request; urllib.request.urlopen('http://127.0.0.1:'+os.environ.get('ADMIN_PORT','8000')+'/healthz', timeout=3)"
|
|
|
|
CMD ["python", "-m", "admin"]
|