基本的な事ですがちょっとハマったのでメモ
問題
docker build した際にunable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /path/と怒られた。
詳細
ディレクトリ構成が次のようになっている時、
. ├── server ├── Dockerfile.prod
次のようなコマンドを打った
$ docker build -t teru01/hoge:1.0 -f Dockerfile.prod ./server
原因
buildのコマンドであるdocker build [オプション] path
の-fオプションは、path
からの相対パスを辿るのだと思い込んでいた。実際はカレントディレクトリからの相対パスになる(絶対パスでもOK)。
なぜこんなことも知らなかったかと言うと、普段はcd server && docker build -t teru01/hoge:1.0 -f Dockerfile.prod .
のようにcdしていたから。今回はGCPのCloud Build環境でビルドする必要があったためcdができなかった。
正しいコマンド
$ docker build -t teru01/hoge:1.0 -f ./server/Dockerfile.prod ./server