Buscar..


Observaciones

  1. Declaración de la imagen base ( FROM )
  2. Metadatos (eg MAINTAINER , LABEL )
  3. Instalar dependencias del sistema (por ejemplo, apt-get install , apk add )
  4. Copiar archivos dependencias de aplicaciones (por ejemplo bower.json , package.json , build.gradle , requirements.txt )
  5. Instalar dependencias de aplicaciones (por ejemplo, npm install , pip install )
  6. Copiando todo el código base
  7. Configuración de configuraciones de tiempo de ejecución predeterminadas (por ejemplo, CMD , ENTRYPOINT , ENV , EXPOSE )

Estos pedidos se realizan para optimizar el tiempo de construcción utilizando el mecanismo de almacenamiento en caché incorporado de Docker.

Regla de los pulgares:

Las partes que cambian a menudo (por ejemplo, código base) deben colocarse cerca del fondo del archivo Docker, y viceversa. Las partes que rara vez cambian (por ejemplo, las dependencias) deben colocarse en la parte superior.

Dockerfile simple

# 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 quedará en desuso en Docker 1.13, y deberá reemplazarse utilizando LABEL. ( Fuente )

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



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow