it-swarm-ja.com

DockerでApacheを再起動します

Dockerコンテナの.htaccessファイルを更新しようとしています。ファイルを更新した後、Apacheを再起動する必要があります。コマンドservice Apache2 restartを使用してApacheを再起動しようとすると、次のエラーが発生します。

(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down Unable to open logs Action 'start' failed. The Apache error log may have more information. ...fail!

エラーログを取得したとき、新しいエラーはありません。これは私のDockerfileがどのように見えるかです:

FROM ubuntu:12.04

# Install dependencies
RUN apt-get update -y
RUN apt-get install -y git curl Apache2 php5 libapache2-mod-php5 php5-mcrypt php5-mysql php5-curl vim

# Install app
RUN rm -rf /var/www/*
ADD src /var/www

# Configure Apache
RUN a2enmod rewrite
RUN chown -R www-data:www-data /var/www
ENV Apache_RUN_USER www-data
ENV Apache_RUN_GROUP www-data
ENV Apache_LOG_DIR /var/log/Apache2

EXPOSE 80

CMD ["/usr/sbin/Apache2", "-D",  "FOREGROUND"]
2
Tyler Hilbert

TLDR;あなたの場合にApacheを再起動するコマンドはkill -USR1 1

ここでクリアする必要があるものはほとんどありません。

  1. Dockerイメージは、CMDを使用してApacheを直接実行しています。
  2. これは、Apacheメインプロセスが常にPID = 1であり、initシステムを使用していないことを意味します。
  3. Initシステムに依存するserviceコマンドを使用してApacheを再起動しようとしています。ドー
  4. Apacheを正常に再起動する別の方法は、メインプロセスにシグナルを送信することです。詳細はこちら: https://httpd.Apache.org/docs/current/stopping.html
1
jazgot

Dockerfileによると、Dockerイメージを作成するときにHTMLファイルを含めます。

ADD src /var/www

では、イメージの実行後に.htaccessファイルを編集する必要がある理由を説明できますか?異なるホストで異なる.htaccessファイルが必要な場合、「docker」の方法は、コンテナーを実行するときに データボリューム を使用することです。

docker run -v /path/to/Host.htaccess:/var/www/.htaccess user/image
0
Patryk Sidzina