Posted at

docker build で tar.gz 指定するときに Dockerfile が見つからないときの対処

More than 1 year has passed since last update.


概要

tar.gz で圧縮したファイルを使って docker イメージを作ろうとしたところ、以下のようなエラーが出てしまった。

$ docker build - < hoge.tar.gz

Sending build context to Docker daemon XXX MB
Error response from daemon: Cannot locate specified Dockerfile: Dockerfile


原因

hoge.tar.gz のルート直下に Dockerfile が見つからずに怒られている。

tar.gz の作り方が悪かった様子

$ tar zcvf hoge.tar.gz hoge

これだと tar.gz ファイルのルート直下に hoge というディレクトリができてしまう

$ tar tf hoge.tar.gz

hoge/
hoge/Dockerfile
hoge/...


解決

tar.gz コマンドの叩き方を変更

$ cd hoge

$ tar zcvf hoge.tar.gz .
$ tar tf hoge.tar.gz
./
./Dockerfile
./...

これで tar.gz のルート直下に Dockerfile が置かれるので、正常に実行できるようになった

$ docker build - < hoge/hoge.tar.gz


所感

docker build - < のググラビリティが低くてちょっと大変だった…