Docker CentOS イメージが httpd を自動起動しない 質問する

Docker CentOS イメージが httpd を自動起動しない 質問する

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

CMDApacheが起動し、コンテナが存在する。私は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 つのオプション:

  1. Apache をフォアグラウンドで実行する必要があります: /usr/sbin/apache2 -DFOREGROUND ...(または CentOS では /usr/sbin/httpd)
  2. エントリポイントとして実行して、すべてのサービス (自動実行として設定された Apache を含む) を開始する必要があります/sbin/init

おすすめ記事