Tôi đang cố gắng thiết lập bộ chứa Docker của Ubuntu chạy ứng dụng HTTP Node.js trên cổng 9000. Để bắt chước cài đặt môi trường sản xuất, tôi cũng muốn chạy Apache như một máy chủ proxy ngược lại đơn giản trong vùng chứa chuyển tiếp đến ứng dụng này từ, ví dụ, cổng 80 (mà tôi tiếp xúc với thế giới xấu lớn).Cấu hình tối thiểu cho proxy ngược Apache trong vùng chứa Docker
Tôi đã có thể thiết lập vùng chứa ứng dụng Node.js tốt và tôi có thể cài đặt và thiết lập Apache trong số Dockerfile
; nhưng tôi hoàn toàn mới để thiết lập một proxy ngược, do đó, trong khi Apache chắc chắn bắt đầu, nó không proxy.
Dockerfile
tôi trông giống như:
# DOCKER-VERSION 1.3.0
FROM ubuntu:12.04
# Install and set up Apache as a reverse proxy
RUN apt-get -y install apache2 libapache2-mod-proxy-html
COPY apache2.conf /etc/apache2/app.conf
RUN cat /etc/apache2/app.conf >> /etc/apache2/apache2.conf
RUN service apache2 start
# Install and set up Node.js and bundle app
# ...This works...
EXPOSE 80
CMD ["./start-app.sh"]
... nơi apache2.conf
Tôi đang phụ thêm để /etc/apache2/apache2.conf
là:
ServerName localhost
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so
LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so
LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /http://localhost:9000/
ProxyPassReverse/http://localhost:9000/
Tôi đang chạy hình ảnh này bằng cách sử dụng lệnh sau:
docker run -p 80:80 -p 81:9000 -d IMAGE
Điều tôi đang mong đợi là sẽ chuyển sang http://$DOCKER_HOST
(tức là, thư mục gốc) sẽ được Apache chọn và chuyển tiếp đến localhost:9000
(ví dụ: ứng dụng của tôi) trong vùng chứa. (Nếu tôi đi đến http://$DOCKER_HOST:81
, tôi đi thẳng đến ứng dụng; chỉ để chứng minh rằng nó đang hoạt động. Điều này hoạt động.) Tôi nghi ngờ rằng vấn đề không phải là tất cả để làm với Docker, nhưng cấu hình Apache.
Bạn có đang sử dụng proxy đảo ngược apache cho mục đích duy nhất là hiển thị máy chủ web của bạn trên cổng 80 thay vì 9000 hoặc nó có mục đích khác không? – Thomasleveil
Chính xác. Trên máy sản xuất, Apache đang làm những thứ khác, không liên quan; Tôi chỉ đặt lớp proxy ngược trong vùng chứa của mình để nó khớp với thiết lập trong quá trình sản xuất. – Xophmeister
Vui lòng chỉnh sửa câu hỏi của bạn bằng lệnh mà bạn đang sử dụng để chạy vùng chứa docker – Thomasleveil