Einführung in Docker
Tim Sangster
Software Engineer @ DataCamp
Der Befehl COPY kopiert Dateien von unserem lokalen Rechner in das Image, das wir erstellen:
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
Wenn der Zielpfad keinen Dateinamen hat, wird der ursprüngliche Dateiname benutzt:
COPY /projects/pipeline_v3/pipeline.py /app/
Wenn du keinen Dateinamen im src-Pfad angibst, werden alle Dateiinhalte kopiert.
COPY <src-folder> <dest-folder>
COPY /projects/pipeline_v3/ /app/
COPY /projects/pipeline_v3/ /app/ kopiert alles unter pipeline_v3/:
/projects/
pipeline_v3/
pipeline.py
requirements.txt
tests/
test_pipeline.py
/init.py
/projects/
Dockerfile
pipeline_v3/
pipeline.py
Wenn unser aktuelles Arbeitsverzeichnis im Ordner projects/ liegt, ...
... können wir init.py nicht in ein Image einfügen.
docker build -t pipeline:v3 .
=> ERROR [4/4] COPY ../init.py / 0.0s
failed to compute cache key: "../init.py" not found: not found
Anstatt Dateien aus einem lokalen Verzeichnis zu kopieren, werden sie beim Erstellen des Images oft heruntergeladen:
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
| Verwendung | Dockerfile-Anweisung |
|---|---|
| Dateien vom Host auf das Image kopieren | COPY <src-path-on-host> <dest-path-on-image> |
| Einen Ordner vom Host auf das Image kopieren | COPY <src-folder> <dest-folder> |
| Wir können nicht aus einem übergeordneten Verzeichnis kopieren, in welchem wir ein Dockerfile erstellen. |
Halte Images klein, indem du sie mit einem einzigen RUN-Befehl herunterlädst, entpackst und bereinigst:
RUN curl <file_download_url> -o <destination_directory> \
&& unzip <destination_directory>/<filename>.zip -d <unzipped-directory> \
&& rm <destination_directory>/<filename>.zip
Einführung in Docker