akhisyabab
akhisyabab

Reputation: 179

Docker [emerg] 1#1: host not found in upstream after separate compose file

i have a compose file. when i run, that working normally

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
[...]

and 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;
  }
}

But, after i separated it into 2 docker compose (one for wordpress-1 service, and one for nginx service) when i run compose file contain nginx, i got this error: [emerg] 1#1: host not found in upstream "wordpress-1"

can you help me? thank's

Upvotes: 1

Views: 1416

Answers (1)

Mika Vatanen
Mika Vatanen

Reputation: 4037

Docker-compose by default creates a network per each set of services (e.g. per each docker-compose file).

If you really need to have separate docker-compose files, you can create a shared network between the services like this:

$ 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

After starting each, you can ping from b to 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

It works between restarts, for example if you restart a container.

Please note, that if nginx can't find a host it's an emerg-error and nginx might stop completely - this might be a problem between service restarts (as dns resolution no longer works).

Upvotes: 1

Related Questions