59 lines
1.8 KiB
Docker
59 lines
1.8 KiB
Docker
# Multi-stage build per distroless
|
|
# Stage 1: Build con immagine completa
|
|
FROM python:3.12-slim AS builder
|
|
|
|
# Installa uv
|
|
COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv
|
|
|
|
WORKDIR /app
|
|
|
|
# Copia i file necessari per la build
|
|
# NOTA: env/ NON viene copiato - sarà montato come volume esterno
|
|
COPY pyproject.toml ./
|
|
COPY src/ ./src/
|
|
COPY certs/ ./certs/
|
|
COPY matlab_func/ ./matlab_func/
|
|
|
|
# Installa le dipendenze in una directory separata
|
|
RUN uv pip install --python=/usr/local/bin/python3 --target=/app/deps .
|
|
|
|
# Compila tutti i file Python in bytecode
|
|
RUN python -OO -m compileall /app/src || true
|
|
|
|
# Rimuovi tutti i file sorgente .py, lasciando solo i .pyc compilati
|
|
RUN find /app/src -type f -name "*.py" -delete
|
|
|
|
# Rimuovi anche i .py dalle dipendenze
|
|
RUN find /app/deps -type f -name "*.py" -delete || true
|
|
|
|
# Crea directory vuote per runtime (saranno montate come volumi)
|
|
RUN mkdir -p /app/logs /app/aseftp/csvfs /app/matlab_runtime /app/env
|
|
|
|
# Stage 2: Immagine distroless finale
|
|
FROM gcr.io/distroless/python3-debian12
|
|
|
|
WORKDIR /app
|
|
|
|
# Copia le dipendenze installate
|
|
COPY --from=builder /app/deps /app/deps
|
|
|
|
# Copia il codice compilato (solo .pyc)
|
|
# NOTA: env/ NON viene copiato - sarà montato come volume dal docker-compose
|
|
COPY --from=builder /app/src ./src/
|
|
COPY --from=builder /app/certs ./certs/
|
|
COPY --from=builder /app/matlab_func ./matlab_func/
|
|
|
|
# Copia le directory vuote (i volumi le sovrascriveranno)
|
|
COPY --from=builder /app/logs ./logs/
|
|
COPY --from=builder /app/aseftp ./aseftp/
|
|
COPY --from=builder /app/matlab_runtime ./matlab_runtime/
|
|
COPY --from=builder /app/env ./env/
|
|
|
|
# Variabili ambiente
|
|
ENV PYTHONUNBUFFERED=1
|
|
ENV PYTHONPATH=/app:/app/deps
|
|
ENV PYTHONDONTWRITEBYTECODE=1
|
|
|
|
# Comando di default (sarà sovrascritto da docker-compose)
|
|
CMD ["python", "-m", "src.elab_orchestrator"]
|