24

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 が起動し、コンテナが存在します。CMDDockerファイルでさまざまな を試しました

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 インスタンスが存在します。

本当に明らかな何かが欠けていますか?

4

3 に答える 3

23

Apache (httpd) を直接実行する必要があります。init.d スクリプトは使用しないでください。

2 つのオプション:

  1. フォアグラウンドで apache を実行する必要があります: /usr/sbin/apache2 -DFOREGROUND ... (または CentOS では /usr/sbin/httpd)
  2. エントリポイントとして実行して、すべてのサービス (自動実行/sbin/initとして構成された apache を含む) を開始する必要があります。
于 2014-01-22T17:23:28.520 に答える
16

DockerfileCentOS のフォアグラウンドで Apache を実行するには、この行をファイルの最後に追加します。

ENTRYPOINT ["/usr/sbin/httpd", "-D", "FOREGROUND"]
于 2015-11-12T20:27:11.890 に答える