dockerfile - subir - imagen docker ubuntu
¿Cómo copiar múltiples archivos en una capa usando un Dockerfile? (4)
Vale la pena mencionar que también puede crear un archivo
.dockerignore
para excluir los archivos que
no
desea copiar:
https://docs.docker.com/engine/reference/builder/#dockerignore-file
Antes de que la CLI de docker envíe el contexto al demonio de docker, busca un archivo llamado .dockerignore en el directorio raíz del contexto. Si este archivo existe, la CLI modifica el contexto para excluir archivos y directorios que coinciden con los patrones que contiene. Esto ayuda a evitar el envío innecesario de archivos y directorios grandes o confidenciales al demonio y, potencialmente, agregarlos a las imágenes mediante AGREGAR o COPIAR.
El siguiente
Dockerfile
contiene cuatro capas
COPY
:
COPY README.md ./
COPY package.json ./
COPY gulpfile.js ./
COPY __BUILD_NUMBER ./
¿Cómo copiar estos archivos usando una capa en su lugar? Se intentó lo siguiente:
COPY [
"__BUILD_NUMBER ./",
"README.md ./",
"gulpfile ./",
"another_file ./",
]
sencillo
COPY README.md package.json gulpfile.js __BUILD_NUMBER ./
del doc
Si se especifican múltiples recursos, ya sea directamente o debido al uso de un comodín, entonces debe ser un directorio y debe terminar con una barra diagonal /.
COPY <all> <the> <things> <last-arg-is-destination>
Pero aquí hay un extracto importante de los documentos:
Si tiene varios pasos de Dockerfile que usan diferentes archivos de su contexto, COPIELOS individualmente, en lugar de todos a la vez. Esto garantiza que la memoria caché de compilación de cada paso solo se invalida (obligando a que el paso se vuelva a ejecutar) si cambian los archivos específicamente requeridos.
https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#add-or-copy
COPY README.md package.json gulpfile.js __BUILD_NUMBER ./
o
COPY ["__BUILD_NUMBER", "README.md", "gulpfile", "another_file", "./"]
También puede usar caracteres comodín en la especificación del archivo fuente. Ver los documentos para un poco más de detalle .
Los directorios son especiales! Si tú escribes
COPY dir1 dir2 ./
que realmente funciona como
COPY dir1/* dir2/* ./
Si desea copiar varios directorios (no sus contenidos) en un directorio de destino en un solo comando, deberá configurar el contexto de compilación para que sus directorios de origen estén bajo un elemento primario común y luego
COPY
ese elemento primario.