Docker链接容器

时间:2018-10-25 00:33:57

标签: docker nginx

我需要设置nginx-proxy容器以使用我的应用将请求转发到该容器。我使用以下命令启动容器:

# app
docker run -d -p 8080:2368 \
  --name app \
  app

# nginx
docker run -d -p 80:8080 \
  --name nginx-proxy \
  jwilder/nginx-proxy

但是,当我尝试访问服务器上的端口80时,得到ERR_CONNECTION_REFUSED。对我来说很明显,nginx容器转发的不是我想要的端口,因为在服务器端口8080上我可以访问该应用程序。 我尝试像这样使用network

# network
docker network create -d bridge net

# app
docker run -d -p 8080:2368 \
  --name app \
  --network net \
  app

# nginx
docker run -d -p 80:8080 \
  --name nginx-proxy \
  --network net \
  jwilder/nginx-proxy

但是结果似乎是相同的。 我需要了解如何从服务器端口80向我的应用发出nginx容器代理请求。

2 个答案:

答案 0 :(得分:0)

您的应用程序正在端口2368上运行,用户不需要直接访问该端口。因此,app容器的端口不需要暴露。

您正确地创建了桥接网络并在其上创建了容器。

您需要从app容器中删除端口映射,并将nginx-proxy容器的端口映射从80:8080更改为80:80

您还需要设置nginx-proxy来将请求从端口80代理到app:2386

这样,用户在Docker运行的主机上点击80端口将被代理到您的应用程序。

答案 1 :(得分:0)

必须使用VIRTUAL_HOST带有应用容器域名的env变量,才能将nginx代理请求发送到应用容器。这种方法不需要网络设置或端口转发。这是我想到的工作设置:

# app
docker run -d \
  --name app \
  -e VIRTUAL_HOST=mydomain.com \
  app

# nginx
docker run -d -p 80:80 \
  --name nginx-proxy \
  jwilder/nginx-proxy