Docker
Ordinamento contenuti Dockerfile
Ricerca…
Osservazioni
- Dichiarazione immagine di base (
FROM
) - Metadati (ad es.
MAINTAINER
,LABEL
) - Installazione delle dipendenze del sistema (ad es.
apt-get install
,apk add
) - Copia del file delle dipendenze dell'app (ad es.
bower.json
,package.json
,build.gradle
,requirements.txt
) - Installazione delle dipendenze dell'app (ad esempio
npm install
,pip install
) - Copia di tutta la base di codice
- Impostazione configs runtime di default (ad esempio
CMD
,ENTRYPOINT
,ENV
,EXPOSE
)
Questi ordini sono fatti per ottimizzare i tempi di costruzione utilizzando il meccanismo di memorizzazione nella cache incorporato di Docker.
Regola generale:
Parti che cambiano spesso (ad es. Codebase) dovrebbero essere posizionate vicino al fondo del Dockerfile e viceversa. Le parti che cambiano raramente (ad es. Dipendenze) dovrebbero essere posizionate in alto.
Dockerfile semplice
# Base image FROM python:2.7-alpine # Metadata MAINTAINER John Doe <[email protected]> # System-level dependencies RUN apk add --update \ ca-certificates \ && update-ca-certificates \ && rm -rf /var/cache/apk/* # App dependencies COPY requirements.txt /requirements.txt RUN pip install -r /requirements.txt # App codebase WORKDIR /app COPY . ./ # Configs ENV DEBUG true EXPOSE 5000 CMD ["python", "app.py"]
MAINTAINER sarà deprecato in Docker 1.13 e dovrebbe essere sostituito utilizzando LABEL. ( Fonte )
Esempio: LABEL Maintainer = "John Doe [email protected]"
Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow