同一コンテナでもデプロイ環境が異なると、confファイルが異なったり、存在しなかったりする。
confファイルがあってもなくても、同一のdockerfileでbuildしたい。
COPY対象ファイルが存在しない場合でも問題なくdocker buildする方法を調べた時のメモ。
COPY対象ファイルがない場合のdocker build
COPY対象ファイルsample.confが存在しない場合の例
Dockerfile
FROM amazonlinux
COPY sample.conf /etc/
CMD ["cat", "/etc/sample.conf"]
対応
COPY対象として、必ず存在するファイルを1つ指定。サンプルではDockerfile。
存在が不確定なファイルはワイルドカードで指定。
Dockerfile
FROM amazonlinux
COPY Dockerfile sample.conf* /etc/
CMD ["cat", "/etc/sample.conf"]
Dockerfileはコピーされてしまうので、必要であれば削除するなどの後処理を追加する。
参考
ワイルドカードなしの場合もエラーになる
Dockerfile
FROM amazonlinux
COPY Dockerfile sample.conf /etc/
CMD ["cat", "/etc/sample.conf"]
ワイルドカードのみの場合もエラーになる
Dockerfile
FROM amazonlinux
COPY sample.conf* /etc/
CMD ["cat", "/etc/sample.conf"]