build image

This commit is contained in:
2025-11-29 19:51:15 +01:00
parent c688eefe0b
commit a4b7d3c738
177 changed files with 2018 additions and 23366 deletions

58
vm1/Dockerfile.distroless Normal file
View File

@@ -0,0 +1,58 @@
# 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"]