Introducción a Docker
Tim Sangster
Software Engineer @ DataCamp
La instrucción COPY copia archivos desde tu máquina local a la imagen en construcción:
COPY <src-path-on-host> <dest-path-on-image>
COPY /projects/pipeline_v3/pipeline.py /app/pipeline.py
docker build -t pipeline:v3 .
...
[4/4] COPY ./projects/pipeline_v3/pipeline.py /app/pipeline.py
Si la ruta de destino no incluye nombre de archivo, se usa el original:
COPY /projects/pipeline_v3/pipeline.py /app/
Si no indicas un nombre de archivo en src, se copiará todo el contenido.
COPY <src-folder> <dest-folder>
COPY /projects/pipeline_v3/ /app/
COPY /projects/pipeline_v3/ /app/ copiará todo lo de pipeline_v3/:
/projects/
pipeline_v3/
pipeline.py
requirements.txt
tests/
test_pipeline.py
/init.py
/projects/
Dockerfile
pipeline_v3/
pipeline.py
Si nuestro directorio de trabajo actual está en projects/.
No podemos copiar init.py a una imagen.
docker build -t pipeline:v3 .
=> ERROR [4/4] COPY ../init.py / 0.0s
failed to compute cache key: "../init.py" not found: not found
En lugar de copiar desde un directorio local, a menudo se descargan archivos durante el build de la imagen:
RUN curl <file-url> -o <destination>
RUN unzip <dest-folder>/<filename>.zip
RUN rm <copy_directory>/<filename>.zip
RUN curl <file_download_url> -o <destination_directory>/<filename>.zip \
&& unzip <destination_directory>/<filename>.zip -d <unzipped-directory> \
&& rm <destination_directory>/<filename>.zip
| Uso | Instrucción Dockerfile |
|---|---|
| Copiar archivos del host a la imagen | COPY <src-path-on-host> <dest-path-on-image> |
| Copiar una carpeta del host a la imagen | COPY <src-folder> <dest-folder> |
| No se puede copiar desde el directorio padre al construir el Dockerfile |
Mantén las imágenes pequeñas descargando, descomprimiendo y limpiando en una sola instrucción RUN:
RUN curl <file_download_url> -o <destination_directory> \
&& unzip <destination_directory>/<filename>.zip -d <unzipped-directory> \
&& rm <destination_directory>/<filename>.zip
Introducción a Docker