仕様のようです
Dockerfileに書いてあるADD/COPYコマンド(及び他のコマンド)はdocker-compose.ymlで指定された場合作動しないようです。
RUNのみ有効、というのが余計にややこしい。
ファイルをコンテナ内にコピーしたい場合、docker-compose.ymlのvolumesを使わないとできないようです。
ファイルの構成例 (一部)
/docker-compose.yml
/apache2.4/Dockerfile
/apache2.4/htdocs/index.html
/apache2.4/conf/httpd.conf
というような構成で、
・Apacheのhtdocsディレクトリはディレクトリまるごと同期しても構わないのでvolumes指定
・confディレクトリ配下はいくつかファイルがあって上書きしたいのがhttpd.confだけなのでADDかCOPYしたい
みたいな場合に、docker-composeだとADD/COPYができないってことなんです。
docker-compose.yml (一部)
apache: build: ./apache2.4/ volumes: - ./apache2.4/htdocs:/usr/local/apache2/htdocs links: - tomcat:tomcat
Dockerfile
FROM httpd:2.4.25 RUN apt-get update && apt-get install -y \ nano ADD ./conf/httpd.conf /usr/local/apache2/conf/httpd.conf
結局どうしたか
コンテナ内のconf配下のファイルを全部docker cpで拾ってきて配置しました。
と、思いきや、volumesにはファイルも指定できるんでしたね。
docker-compose.yml (一部)
apache: build: ./apache2.4/ volumes: - ./apache2.4/htdocs:/usr/local/apache2/htdocs - ./apache2.4/conf/httpd.conf:/usr/local/apache2/conf/httpd.conf links: - tomcat:tomcat
Dockerfile
FROM httpd:2.4.25 RUN apt-get update && apt-get install -y \ nano
できた!