電気ひつじ牧場

技術メモと日常のあれこれ

Dockerのunable to prepare context: unable to evaluate symlinks in Dockerfile pathについて

基本的な事ですがちょっとハマったのでメモ

問題

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