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
CMD
Apacheが起動し、コンテナが存在する。私はdockerファイルでさまざまな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インスタンスが存在することになります
何か非常に明白なことを見逃しているのでしょうか?
ベストアンサー1
apache (httpd) を直接実行する必要があります。init.d スクリプトは使用しないでください。
2 つのオプション:
- Apache をフォアグラウンドで実行する必要があります:
/usr/sbin/apache2 -DFOREGROUND ...
(または CentOS では /usr/sbin/httpd) - エントリポイントとして実行して、すべてのサービス (自動実行として設定された Apache を含む) を開始する必要があります
/sbin/init
。