Khởi động lại apache trên Docker


2

Tôi đang cố gắng cập nhật .htaccess tập tin trên một container Docker. Sau khi cập nhật tệp, tôi cần khởi động lại Apache. Bất cứ khi nào tôi cố gắng khởi động lại Apache bằng lệnh service apache2 restart, Tôi nhận được lỗi sau đây:

(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!

Khi tôi nhận được đến nhật ký lỗi, không có lỗi mới. Đây là những gì Dockerfile của tôi trông giống như:

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"]

Câu trả lời:


1

TLDR; lệnh để khởi động lại apache trong trường hợp của bạn là kill -USR1 1

Vài điều cần được xóa ở đây:

  1. Hình ảnh docker của bạn đang chạy apache trực tiếp bằng cách sử dụng CMD.
  2. điều này có nghĩa là quá trình chính của apache sẽ luôn có PID = 1 và bạn không sử dụng hệ thống init.
  3. Bạn đang cố gắng khởi động lại apache bằng cách sử dụng service lệnh dựa trên hệ thống init. Doh
  4. Cách khác để khởi động lại apache duyên dáng là gửi tín hiệu đến tiến trình chính. Đọc thêm tại đây: https://httpd.apache.org/docs/cản/stopping.html

0

Theo Dockerfile của bạn, bạn bao gồm các tệp HTML của mình khi tạo hình ảnh docker của bạn:

ADD src /var/www

Vì vậy, bạn có thể giải thích lý do tại sao bạn cần chỉnh sửa tệp .htaccess sau khi chạy hình ảnh của bạn? Nếu bạn cần một tệp .htaccess khác nhau trên các máy chủ khác nhau, cách "docker" sẽ là sử dụng một khối lượng dữ liệu khi chạy container của bạn:

docker run -v /path/to/host.htaccess:/var/www/.htaccess user/image
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.