【问题标题】:Docker [emerg] 1#1: host not found in upstream after separate compose fileDocker [emerg] 1#1:在单独的撰写文件后在上游找不到主机
【发布时间】:2019-07-11 00:03:47
【问题描述】:

我有一个撰写文件。当我运行时,它工作正常

services:
[...]
  wordpress-1:
     depends_on:
       - database
     image: wordpress:latest
     expose:
       - 5000
     volumes:
       - ./site1/:/var/www/html/
    [...]

  nginx:
    container_name: nginx_
    build:
     context: ./services/nginx
     dockerfile: Dockerfile-prod
    ports:
      - 80:80
    depends_on:
      - wordpress-1
    networks:
      - my-network
[...]

和 nginx 配置:

server {

  listen 80;
  server_name example.com;

  location / {
    proxy_pass http://wordpress-1:80;
    proxy_redirect    default;
    proxy_set_header  Host $host;
    proxy_set_header  X-Real-IP $remote_addr;
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header  X-Forwarded-Host $server_name;
  }
}

但是,在我将它分成 2 个 docker compose(一个用于 wordpress-1 服务,一个用于 nginx 服务)后,当我运行包含 nginx 的 compose 文件时,出现此错误:[emerg] 1#1: host not found在上游“wordpress-1”

你能帮帮我吗? 谢谢

【问题讨论】:

    标签: docker nginx docker-compose


    【解决方案1】:

    Docker-compose 默认为每组服务创建一个网络(例如,每个 docker-compose 文件)。

    如果你真的需要单独的 docker-compose 文件,你可以像这样在服务之间创建一个共享网络:

    $ cat a/docker-compose.yml 
    version: '3.5'
    services:
      a:
        image: alpine
        command: sleep 9999
        networks: ["mynet"]
    networks:
      mynet:
        name: shared-net
    
    $ cat b/docker-compose.yml 
    version: '3.5'
    services:
      b:
        image: alpine
        command: sleep 9999
        networks: ["mynet"]
    networks:
      mynet:
        name: shared-net
    

    每个启动后,都可以从 b ping 到 a:

    $ docker exec -it b_b_1 ping -c 1 a_a_1
    PING a_a_1 (172.21.0.3): 56 data bytes
    64 bytes from 172.21.0.3: seq=0 ttl=64 time=0.081 ms
    
    --- a_a_1 ping statistics ---
    1 packets transmitted, 1 packets received, 0% packet loss
    round-trip min/avg/max = 0.081/0.081/0.081 ms
    

    它在重启之间起作用,例如,如果你重启一个容器。

    请注意,如果 nginx 找不到主机,这是一个紧急错误,并且 nginx 可能会完全停止 - 这可能是服务重新启动之间的问题(因为 dns 解析不再有效)。

    【讨论】:

      猜你喜欢
      • 2017-07-31
      • 1970-01-01
      • 2016-02-11
      • 1970-01-01
      • 2020-12-22
      • 2021-12-30
      • 2020-07-08
      • 2018-03-03
      • 1970-01-01
      相关资源
      最近更新 更多