FROM python:3.12 AS builder ENV POETRY_HOME="/opt/poetry" ENV PATH="$POETRY_HOME/bin:$PATH" RUN apt update && \ apt install -y gettext WORKDIR /app RUN curl -sSL https://install.python-poetry.org | python3 - COPY pyproject.toml poetry.lock README.md ./ RUN poetry config virtualenvs.in-project true RUN --mount=type=cache,target=/root/.cache/pypoetry/cache \ --mount=type=cache,target=/root/.cache/pypoetry/artifacts \ poetry install --with app --no-root COPY locales ./locales RUN cd locales/ru/LC_MESSAGES && msgfmt messages.po FROM node:24 AS node-builder ENV PATH=/app/node_modules/.bin:$PATH WORKDIR /app COPY static/package.json static/package-lock.json ./ RUN --mount=type=cache,target=/root/.npm \ npm ci COPY static ./ RUN npm run build FROM python:3.12-slim ENV PATH="/app/.venv/bin:$PATH" WORKDIR /app ENV TZ="Europe/Moscow" COPY --from=builder /app ./ COPY --from=node-builder /app/dist ./static/dist COPY gallery gallery/ COPY --from=builder --parents locales/**/*.mo ./ CMD ["uvicorn", "gallery.main:app", "--host", "0.0.0.0", "--port", "80", "--log-config", "gallery/logging.yaml"]