build image
This commit is contained in:
58
vm1/Dockerfile.distroless
Normal file
58
vm1/Dockerfile.distroless
Normal 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"]
|
||||
Reference in New Issue
Block a user