在另一个应用程序中运行docker中的nginx

我有我的应用程序需要服务于端口:5000

这是我的dockerfile

 FROM ubuntu:14.04 RUN apt-get update RUN apt-get install -y nginx ADD ./nginx.conf /etc/nginx/sites-available/default RUN service nginx restart RUN go get github.com/a/mycmd EXPOSE 5000 

我跑了

 sudo docker run --publish 5000:5000 --rm app /go/bin/mycmd 

这里是我的nginxconfiguration文件:

 limit_req_zone $binary_remote_addr zone=limit:10m rate=2r/s; server { listen 80; set_real_ip_from 0.0.0.0/0; real_ip_header X-Forwarded-For; real_ip_recursive on; server_name 123.13.13.13 example.com; location / { proxy_read_timeout 3000s; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_pass http://127.0.0.1:5000; limit_req zone=limit burst=5 nodelay; } } 

然后我期望这个redirect来自networking服务器(端口80 )的stream量到我的应用程序端口5000 ,但似乎nginx不正确地做反向代理。 stream量不会被定向到我的应用程序。

如何在同一个容器中设置nginx和我的应用程序,以便我可以使用它作为反向代理?

谢谢!

你在nginxconfiguration中提到:

 proxy_pass http://127.0.0.1:8000; 

但是你想redirect到EXPOSE端口5000。

 proxy_pass http://127.0.0.1:5000; 

如果是拼写错误,那么请确保您发布80到主机端口(直接使用容器IP地址)。

不要忘记,如果您正在使用虚拟机,则可能必须将发布的端口端口转发:请参阅“ 从外部连接到在docker集装箱内运行的服务 ”