🦆
dockerビルド時のフォルダ指定
dockerでもdocker composeでも
基本、コマンド実行フォルダ配下のDockerfile
が呼ばれますが
かならずしもそういうフォルダ構成でないといけないわけではないという
備忘録です。
ビルドする
対象となる、コンテキスト(context)とファイル(dockerfile)を指定することができます。
# docker build <コンテキスト指定> -f <ファイルパス>
docker build . -f ./setup/develop.dockerfile
contextはdocker buildコマンドを入力する際、必須です。
.(ドット)はコマンドプロンプトで指定しているフォルダ直下をさします。
docker composeを利用する場合
contextで指定したパスが親ディレクトリになります。
compose.yaml
services:
app:
build:
context: .
dockerfile: ./setup/develop.dockerfile
restart: unless-stopped
ビルドする
docker compose build
ビルドとコンテナ起動まで実行(バックグラウンドで起動 = デタッチモード-d
)
※ すでにイメージが存在する場合はビルドは行わず、コンテナ起動のみ
docker compose up -d
compose実行時の凡ミス
compose.yamlがあるフォルダ直下でコマンドは実行する
コマンド自体実行できるが、エラーメッセージなど表示されないので気をつける
root@dummy:~/test/sandbox$ docker compose build
root@dummy:~/test/sandbox$
参照ファイルが存在するフォルダを指定する
指定していなかった場合、以下のようなエラーメッセージが表示されます。
root@dummy:~/test/sandbox/hoge$ docker compose build
[+] Building 1.0s (7/7) FINISHED
=> [internal] load build definition from Dockerfile 0.5s
=> => transferring dockerfile: 420B 0.0s
=> [internal] load .dockerignore 0.6s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/alpine:latest 0.0s
=> [1/3] FROM docker.io/library/alpine:latest 0.2s
=> [internal] load build context 0.3s
=> => transferring context: 2B 0.0s
=> ERROR [2/3] ADD ./hoge/fuga2.txt /sandbox/fuga2.txt 0.0s
=> ERROR [3/3] ADD ./hoge /sandbox 0.0s
------
> [2/3] ADD ./hoge/fuga2.txt /sandbox/fuga2.txt:
------
------
> [3/3] ADD ./hoge /sandbox:
------
failed to solve: failed to compute cache key: failed to walk /var/lib/docker/tmp/buildkit-mount2970273137/hoge: lstat /var/lib/docker/tmp/buildkit-mount2970273137/hoge: no such file or directory
dockerfile名を正しく書く(ファイルパスが正しいか)
存在しないdockerfile(拡張子に.dockerfileをつけたファイル)を指定した場合は以下のようなエラーメッセージが表示されます。
root@dummy~/test/sandbox/hoge$ docker compose build
[+] Building 0.0s (0/0)
could not find /home/root/test/sandbox/hoge/hoge: stat /home/root/test/sandbox/hoge/hoge: no such file or directory
指定したフォルダ先にDockerfile(拡張子なしのDockerfile
)がない場合は以下のようなエラーメッセージが表示されます。
root@dummy:~/test/sandbox/hoge$ docker compose build
[+] Building 0.2s (2/2) FINISHED
=> [internal] load build definition from Dockerfile 0.1s
=> => transferring dockerfile: 2B 0.0s
=> [internal] load .dockerignore 0.1s
=> => transferring context: 2B 0.0s
failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: failed to read dockerfile: open /var/lib/docker/tmp/buildkit-mount4160731069/Dockerfile: no such file or directory
Discussion