ApacheとPHPプログラムを使用して単純なDockerイメージを実行しようとしています。実行すると正常に動作します。
docker run -t -i -p 80:80 my/httpd /bin/bash
次に、手動でApacheを起動します
service httpd start
ただし、実行時にhttpdを自動的に起動することはできません
docker run -d -p 80:80 my/httpd
Apacheが起動すると、コンテナが存在します。 DockerファイルでさまざまなCMD
sを試しました
CMD /etc/init.d/httpd start
CMD ["service" "httpd" "start"]
CMD ["/bin/bash", "/etc/init.d/httpd start"]
ENTRYPOINT /etc/init.d/httpd CMD start
CMD ./start.sh
start.shは
#!/bin/bash
/etc/init.d/httpd start
ただし、Apacheの起動後に毎回dockerインスタンスが存在します
私は本当に明らかなものを見逃していますか?
Apache(httpd)を直接実行する必要があります-init.dスクリプトを使用しないでください。
2つのオプション:
/usr/sbin/Apache2 -DFOREGROUND ...
(またはCentOSの/ usr/sbin/httpd)/sbin/init
をエントリポイントとして実行して、すべてのサービス(自動実行として構成されたApacheを含む)を開始する必要があります。この素敵な投稿を参照してください: http://www.kstaken.com/blog/2013/07/06/how-to-run-Apache-under-docker/
CentOSでフォアグラウンドでApacheを実行するには、Dockerfile
の最後にこの行を追加します
ENTRYPOINT ["/usr/sbin/httpd", "-D", "FOREGROUND"]