【发布时间】:2018-01-01 09:59:13
【问题描述】:
我想在 docker 容器中运行 Nginx,它侦听端口 80,当 url 以单词 api 开头时,我希望它代理_pass 到端口 8080,并且我有一些 Web 应用程序侦听端口 8080。这是在没有 docker 的情况下为我工作,但有了 docker,我无法让它工作。
我的 nginx.conf 是这样的:
location /{
# serve static page
}
location /api {
proxy_pass http://0.0.0.0:8080;
}
我使用 docker run -d -p 80:80 -p 8080: 8080 nginx 运行我的 nginx 容器
我的问题是现在我无法再运行我的网络应用程序,因为它无法侦听端口 8080,因为该容器已经在侦听它。
【问题讨论】:
-
使用 docker,您通常不应该在单个容器中运行多个进程。尝试在单独的容器中运行您的 Web 应用程序,并让 nginx 代理向它发出请求。
-
@Sebastian 我不是。 nginx 容器只包含 nginx,但我不知道如何将请求从 nginx 容器传递到我的 web 应用程序容器。
-
如果您使用不同的容器,就不会有端口冲突(正如您在问题中指出的那样)