Ricerca…


Osservazioni

  1. Dichiarazione immagine di base ( FROM )
  2. Metadati (ad es. MAINTAINER , LABEL )
  3. Installazione delle dipendenze del sistema (ad es. apt-get install , apk add )
  4. Copia del file delle dipendenze dell'app (ad es. bower.json , package.json , build.gradle , requirements.txt )
  5. Installazione delle dipendenze dell'app (ad esempio npm install , pip install )
  6. Copia di tutta la base di codice
  7. 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