docker buildをしていてうまく動かないことや新たにもった知見などがあったのでまとめる。
ARG
外部から値を注入できる
下記Dockerdileから一部抜粋
ARG copy_path
# 使うとき
COPY ${copy_path} /path/to/use
buildするとき
docker build ./ --build-arg copy_path=./script
ADD
COPYとの違いとして、解凍、展開をしてくれると記載されていることが多いが、zipファイルは解凍されないので注意。
解凍、展開はtar、gzの場合に行われる。
docker build時の注意点
context
一番ハマったやつ
sample
|- docker
| |- web
| |- Dockerfile
|
|- config
|- web
|- nginx.conf
上記のようなディレクトリ構造でプロジェクトルートにてdokcer buildを行う際、
docker build -f docker/web/Dockerfile docker/web
とすると nginx.conf
を参照(ADDやCOPY)することはできなくなる。
これは docker/web
と指定している部分(context)で参照スコープを絞っているため、 docker/web
よりも上位階層から枝分かれしたディレクトリを見れなくなってしまうからということらしい。
言われてみるとなるほど!となるんだけど別リポジトリのDockerfileやMakefileをコピってきてちょちょで使おうとするとハマりやすそうなところだったのでまとめてみました。
以上