docker-compose中的DNS,映射到非80端口?

时间:2018-06-04 12:59:39

标签: docker nginx docker-compose

在尝试使用docker-compose时,我遇到了NGINX和dns的一些问题。错误是NGINX中常规的“连接到上游时拒绝连接”。我认为问题是由端口号引起的。

this one这样的在线示例在端口80上运行NGINX,这不会导致问题。

docker-compose.yml:

version: '3'
services:
  http-server:
    networks:
      - mynetwork
    image: nginx_image
    ports:
      - 8080:8080
    depends_on:
      - frontend
      - rest_api
  frontend:
    networks:
      - mynetwork
    image: frontend_image
    ports:
      - 8001:8001
  rest_api:
    networks:
      - mynetwork
    image: rest_api_image
    ports:
      - 8000:8000

网络:   我的网络:     司机:桥梁

nginx.i for nginx_image有这个块:

server {
    listen 8080;

location /static/js/  {
  proxy_pass http://frontend;
    }

location /static/css/  {
    proxy_pass http://frontend;
    }

location /static/ {
    proxy_pass http://rest_api;
}

location / {
proxy_pass http://frontend;
    }

location /rest_api/ {
    proxy_pass http://rest_api;
    }
}

现在,前端和api都通过端口80调用,而它应该是8001和8000.

我错过了什么?我希望docker-compose自动进行端口映射。

提前致谢!

亲切的问候,

DA

EDIT1 :这是错误(包括主机名建议)

EDIT2 :更新了问题

http-server_1  | 2018/06/04 14:47:50 [error] 14#14: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.18.0.1, server: , request: "GET /rest_api/admin/ HTTP/1.1", upstream: "http://172.18.0.2:80/rest_api/admin/", host: "localhost:8080"

1 个答案:

答案 0 :(得分:1)

你必须指定主机名:

  frontend:
    image: frontend_image
    hostname: frontend
    ports:
      - 8001:8001
  rest_api:
    hostname: rest_api