Docker [emerg] 1#1:单独的撰写文件后在上游找不到主机

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker [emerg] 1#1:单独的撰写文件后在上游找不到主机相关的知识,希望对你有一定的参考价值。

我有一个撰写文件。当我跑,这是正常的

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 conf:

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服务)后,当我运行compose文件包含nginx时,我收到了这个错误:[emerg] 1#1:在上游找不到主机“ WordPress的-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到:

$ 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无法找到主机,则会出现emerg-error,并且nginx可能会完全停止 - 这可能是服务重启之间的问题(因为dns解析不再有效)。

以上是关于Docker [emerg] 1#1:单独的撰写文件后在上游找不到主机的主要内容,如果未能解决你的问题,请参考以下文章

软文撰写你知道怎么写吗?

软文撰写你知道怎么写吗?

Nginx 与 Docker : nginx: [emerg] 未知指令“启用”在 /etc/nginx/nginx.conf

Docker compose 错误:nginx:在 /etc/nginx/conf.d/default.conf:21 的上游“app”中找不到 [emerg] 主机

Docker撰写mysql连接失败

使用spring boot mysql docker时docker撰写问题