【Docker】COPYで指定されたファイルは、Dockerfileが存在するディレクトリからの相対パスで、親ディレクトリを見れない
今日ハマったのでメモ。
Dockerfile内の COPY に指定するファイルは、Dockerfileからの相対パスで記載する必要がある。
(どうもCOPYだけじゃなくて、ADDもダメっぽい)
例えば以下のようなディレクトリ階層があったとする。
code:bash
./
├── database
│ └── Dockerfile
├── docker-compose
│ └── docker-compose.yml
├── env
│ └── .env
└── web
└── Dockerfile
で、各Dockerfileは env/.envファイルをコピーしたいとする。
なので、Dockerfileは
code:Dockerfile
COPY ./../env/.env /env
こんな感じに記載すればいいんじゃね?と思ったが、Dockerfileが存在するディレクトリよりも親の階層を見に行くことはできないらしい。
じゃあ、各Dockerfileが配置されているディレクトリに .env ファイルのシンボリックリンクを貼ればいいのではないかと考えたが、結局シンボリックリンクが指すのは上位階層へのパスなのでエラーになる。
解決方法
大人しくDockerfileと同一階層か、より下層のディレクトリに配置しましょう。