Docker の紹介
Tim Sangster
Software Engineer @ DataCamp
COPY命令は、ローカルマシン上のファイルを、作成中のイメージにコピーします。
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
宛先パスにファイル名がない場合、元のファイル名が使用されます:
COPY /projects/pipeline_v3/pipeline.py /app/
src-path にファイル名を指定しないと、ファイルの内容がすべてコピーされます。
COPY <src-folder> <dest-folder>
COPY /projects/pipeline_v3/ /app/
COPY /projects/pipeline_v3/ /app/ は pipeline_v3/ 配下のすべてをコピーします:
/projects/
pipeline_v3/
pipeline.py
requirements.txt
tests/
test_pipeline.py
/init.py
/projects/
Dockerfile
pipeline_v3/
pipeline.py
現在の作業ディレクトリがprojects/フォルダにある場合。
init.py を画像にコピーすることはできません。
docker build -t pipeline:v3 .
=> ERROR [4/4] COPY ../init.py / 0.0s
failed to compute cache key: "../init.py" not found: not found
ローカルディレクトリからファイルをコピーする代わりに、イメージビルド中にファイルがダウンロードされることがよくあります。
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
| 使用法 | Dockerfile 命令 |
|---|---|
| ホストからイメージへファイルをコピーする | COPY <src-path-on-host> <dest-path-on-image> |
| ホストからイメージへフォルダーをコピーする | COPY <src-folder> <dest-folder> |
Dockerfile をビルドする際、親ディレクトリからはコピーできません | COPY ../<file-in-parent-directory> /|
画像を小さく保つには、ダウンロード、解凍、クリーンアップを1つのRUN命令で行ってください:
RUN curl <file_download_url> -o <destination_directory> \
&& unzip <destination_directory>/<filename>.zip -d <unzipped-directory> \
&& rm <destination_directory>/<filename>.zip
Docker の紹介