Suche…


Bemerkungen

  1. Basisbilddeklaration ( FROM )
  2. Metadaten (zB MAINTAINER , LABEL )
  3. Installation von Systemabhängigkeiten (zB apt-get install , apk add )
  4. App-Abhängigkeitsdatei bower.json (z. B. bower.json , package.json , build.gradle , requirements.txt )
  5. App-Abhängigkeiten npm install (zB npm install , pip install )
  6. Kopieren der gesamten Codebasis
  7. Standard-Laufzeitkonfigurationen einrichten (zB CMD , ENTRYPOINT , ENV , EXPOSE )

Diese Reihenfolge wird zur Optimierung der Buildzeit mithilfe des integrierten Cache-Mechanismus von Docker festgelegt.

Faustregel:

Teile, die sich häufig ändern (z. B. Codebase), sollten sich in der Nähe der Unterseite der Dockerfile befinden und umgekehrt. Teile, die sich selten ändern (z. B. Abhängigkeiten), sollten oben platziert werden.

Einfache Dockerfile

# 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 wird in Docker 1.13 nicht mehr empfohlen und sollte mit LABEL ersetzt werden. ( Quelle )

Beispiel: LABEL Maintainer = "John Doe [email protected]"



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow