Introduction à Docker
Tim Sangster
Software Engineer @ DataCamp
L'instruction COPY copie des fichiers de notre machine locale vers l'image en cours de création :
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 le chemin de destination n'inclut pas de nom de fichier, l'original est utilisé :
COPY /projects/pipeline_v3/pipeline.py /app/
Si vous n'indiquez pas de nom de fichier dans le src-path, tout le contenu du dossier est copié.
COPY <src-folder> <dest-folder>
COPY /projects/pipeline_v3/ /app/
COPY /projects/pipeline_v3/ /app/ copiera tout ce qui se trouve sous pipeline_v3/ :
/projects/
pipeline_v3/
pipeline.py
requirements.txt
tests/
test_pipeline.py
/init.py
/projects/
Dockerfile
pipeline_v3/
pipeline.py
Si notre répertoire de travail actuel est le dossier projects/.
Nous ne pouvons pas copier init.py dans une image.
docker build -t pipeline:v3 .
=> ERROR [4/4] COPY ../init.py / 0.0s
failed to compute cache key: "../init.py" not found: not found
Plutôt que de copier des fichiers d'un dossier local, on télécharge souvent des fichiers lors de la création de l'image :
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
| Utilisation | Instruction Dockerfile |
|---|---|
| Copier des fichiers de l'hôte vers l'image | COPY <src-path-on-host> <dest-path-on-image> |
| Copier un dossier de l'hôte vers l'image | COPY <src-folder> <dest-folder> |
| Impossible de copier depuis un répertoire parent lors de la création d'un Dockerfile |
Gardez les images légères en téléchargeant, décompressant et nettoyant dans une seule instruction RUN :
RUN curl <file_download_url> -o <destination_directory> \
&& unzip <destination_directory>/<filename>.zip -d <unzipped-directory> \
&& rm <destination_directory>/<filename>.zip
Introduction à Docker