読者です 読者をやめる 読者になる 読者になる

メンチカツには醤油でしょ!!

ITエンジニア徒然 (AWS/Java/JavaScript/Google Spreadsheets/Jenkins/Mac/外部コミュニティ・勉強会レポ)

docker-compose.ymlで指定したDockerfile内のADD/COPYが効かない

仕様のようです

Dockerfileに書いてあるADD/COPYコマンド(及び他のコマンド)はdocker-compose.ymlで指定された場合作動しないようです。
RUNのみ有効、というのが余計にややこしい。

ファイルをコンテナ内にコピーしたい場合、docker-compose.ymlのvolumesを使わないとできないようです。

github.com

ファイルの構成例 (一部)

/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

できた!

github.com