1. ホーム
  2. docker

[解決済み] Dockerfileで条件付きCOPY/ADD?

2022-04-27 14:32:46

質問

Dockerfileの中に、ファイルがあればイメージにCOPYしたいのですが、pipのrequirements.txtは良い候補のように思えますが、どのように実現するのでしょうか?

COPY (requirements.txt if test -e requirements.txt; fi) /destination
...
RUN  if test -e requirements.txt; then pip install -r requirements.txt; fi

または

if test -e requirements.txt; then
    COPY requiements.txt /destination;
fi
RUN  if test -e requirements.txt; then pip install -r requirements.txt; fi

解決方法は?

これは現在サポートされていません(同じDockerfileでもファイルの存在によってコピーされたりされなかったりするので、再現性のないイメージになってしまうと思われるため)。

これはまだ要求されている、で 課題13045 ワイルドカードを使用した場合: " COPY foo/* bar/" not work if no file in foo "(2015年5月)。

Dockerには今のところ(2015年7月)実装されませんが、別のビルドツールのような ボッカー が対応している可能性があります。