はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Docker】Dockerfileよりも上位階層に含まれるファイルをCOPYしたいときの対処法

はじめに

以下の構成の際にsample.txtをCOPYしたいというモチベがあったのですが、単純に以下のようにコマンドを実行しても動きませんでした。

parent
├── child1
│   └── Dockerfile
└── child2
    └── sample.txt
# Dockerfile
COPY ../child2/sample.txt ./sample.txt
# docker buildを行う
$pwd
…/parent/child1
$ docker build .
ERROR: failed to solve: failed to compute cache key: failed to calculate checksum of ref ...: "/child2/sample.txt": not found

その対処法を備忘録がてら書き残しておこうと思います。

対処法

実行するカレントディレクトリを目的のファイルを含めるパスへ変更をしてから、docker buildを実行します。

$ pwd
../parent

$ docker build . -f ./child1/Dockerfile

-fを付与することで、Dockerfile がファイルシステム上のどこにあってもDockerfileを指定することができます。
docs.docker.jp

docker-compose.yamlでも同様にdockerfileを指定してあげればいけます。