Szukaj…


Uwagi

  1. Podstawowa deklaracja obrazu ( FROM )
  2. Metadane (np. MAINTAINER , LABEL )
  3. Instalowanie zależności systemowych (np. apt-get install , apk add )
  4. Kopiowanie pliku zależności aplikacji (np. bower.json , package.json , build.gradle , requirements.txt )
  5. Instalowanie zależności aplikacji (np. npm install pip install )
  6. Kopiowanie całej bazy kodu
  7. Konfigurowanie domyślnych configs wykonawcze (np CMD , ENTRYPOINT , ENV , EXPOSE )

Te uporządkowania są wykonywane w celu optymalizacji czasu kompilacji za pomocą wbudowanego mechanizmu buforowania Dockera.

Reguła kciuka:

Części, które często się zmieniają (np. Podstawa kodu) powinny być umieszczone w pobliżu dna pliku Docker i odwrotnie. Części, które rzadko się zmieniają (np. Zależności) należy umieścić na górze.

Prosty plik Docker

# 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 zostanie uznany za przestarzały w Docker 1.13 i powinien zostać zastąpiony przy użyciu LABEL. ( Źródło )

Przykład: LABEL Maintainer = "John Doe [email protected]"



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow