質問: "test-vagrant" config.vm.network :forwarded_port, host: 8080, guest: 80 config.vm.provision "shell", inline: <<-SHELL sudo service docker start sudo docker build -t test/base.web /vagrant sudo docker rm websv sudo docker run --name websv --privileged -p 80:80 -e "TZ=Asia/Tokyo" test/base.web SHELL end ``` **Dockerfile** ``` FROM centos MAINTAINER beck RUN yum install -y epel-release RUN rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm RUN yum install -y --enablerepo=remi httpd httpd-devel RUN yum install -y --enablerepo=remi,remi-php70 php71 php71-php php71-php-mbstring php71-php-mcrypt php71-php-pdo php71-php-common php71-php-pecl-memcache php71-php-pecl-memcached php71-php-mysqlnd php71-php-cli RUN yum install -y crontab ENTRYPOINT ["/sbin/init"] ``` **質問** ・事前に作り置きしたイメージではなく、都度プロビジョニングする場合、どのタイミングで自動起動の設定を仕込むのか、その仕込み方。 ・1プロセス/コンテナのdockerの基本的な考えからすると、httpdとcrondは別のコンテナにするべきなのか? その場合、ごく一般的なLAMPスタックの場合、 1.httpd+スクリプト用コンテナ 2.RDBMS用コンテナ 3.smtpd用コンテナ その他 4.memcached用コンテナ 5.バッチ処理用(crond)コンテナ が一般的な構成になりますでしょうか。 (4と5は弊社サービス要件になります) 宜しくお願いします。
回答: > > ・事前に作り置きしたイメージではなく、都度プロビジョニングする場合、どのタイミングで自動起動の設定を仕込むのか、その仕込み方。 > > > Dockerfile で `RUN yum install -y httpd && systemctl enable httpd.service` などとすればいいと思います。 `systemdtl enable/disable` は /sbin/init が起動していなくても実行できそうです。 > > ・1プロセス/コンテナのdockerの基本的な考えからすると、httpdとcrondは別のコンテナにするべきなのか? > > > 一般的には別にすべきなのでしょうけれど、個人的にはどちらでもいいかと。 将来的にマルチホストで Docker を動かすとか、スケールアウトを考えるのであれば、別にしておいた方がいいかもしれません。 ただ、もともと httpd と crond が独立している(=簡単に別コンテナにできる)のであればいいですが、別コンテナにしたいがために、より複雑な構成になるのであれば、メリット/デメリットのバランスを考えて、ということになると思います。