포트 9000에서 Node.js HTTP 응용 프로그램을 실행하는 Ubuntu Docker 컨테이너를 설정하려고합니다. 프로덕션 환경의 설정을 모방하기 위해 Apache를 다음과 같이 실행하고 싶습니다. 예를 들어 포트 80 (큰 나쁜 세계에 노출되는)에서이 앱으로 전달되는 컨테이너 내의 간단한 리버스 프록시 서버.Docker 컨테이너의 Apache 역 프록시에 대한 최소 구성
Node.js 앱 컨테이너를 올바르게 설정할 수 있었고 Apache를 설치하고 설정할 수 있습니다. Dockerfile
; 하지만 전적으로 역방향 프록시를 설정하는 것이므로 아파치가 확실히 시작되지만 프록시는 아닙니다. 내 Dockerfile
보이는 뭔가 같은 : 나는 다음과 같은 명령을 사용하여 이미지를 실행하고
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/
: 나는 /etc/apache2/apache2.conf
에 추가하고있어 apache2.conf
가
# 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"]
...
docker run -p 80:80 -p 81:9000 -d IMAGE
내가 기대하는 바는 http://$DOCKER_HOST
(루트)은 Apache에 의해 선택되어 컨테이너의 localhost:9000
(즉, 내 앱)으로 전달됩니다. (만약 내가 http://$DOCKER_HOST:81
로 간다면, 나는 곧바로 실행되고 있음을 증명하기 위해 앱으로 곧장 간다.)이 문제는 Docker가 아니라 Apache 구성과 관련이 있다고 생각한다.
웹 서버를 9000 대신 포트 80에 노출시키는 목적으로 Apache 역방향 프록시를 사용하고 있습니까? 아니면 다른 용도로 사용 하시겠습니까? – Thomasleveil
정확히. 프로덕션 시스템에서 Apache는 관련없는 다른 작업을 수행합니다. 프로덕션 환경의 설정과 일치하도록 컨테이너에 리버스 프록시 레이어를 넣는 것뿐입니다. – Xophmeister
명령으로 질문을 편집 할 수 있습니다. 도커 컨테이너를 실행하는 데 사용하고 있습니까 – Thomasleveil