Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
334 views
in Technique[技术] by (71.8m points)

Docker-Compose - Container Network - Name or Service Not Known

I am having some issues getting my containers to connect using the container name.

I have 4 different containers... app_backend, app_web, app_redis, app_db.

In my docker-compose file I have defined a network, appnet, and put all the containers on the same network. I'll show this below.

The app_backend container connects to the app_redis and app_db container just fine with the container name as the host name... here is an example url that I am using:http://app_redis:6379 or http://app_db:3306.

The app_web container, is refusing to connect to my app_backend unless I specify the host name as localhost. For example... http://localhost:4000 works, but http://app_backend:4000 does not.

The app_backend container is running a express server, and I have confirmed by logging the servername/hostname that it is running at http://app_backend:4000.

If I ssh (docker exec -it web bash) into the app_web container and ping the app_backend container, ping app_backend, it returns a ping! Though if I ping the app_backend container with the port, ping http://app_backend:4000 or even just app_backend:4000, it returns Name or Service Not Known.

Either way... My frontend is trying to request data from my express api and I am not sure what to do in order to get this to work.

Previously, I'd request from the api at http://localhost:4000/api/thing-to-call. I am having some network issues with uploading files and I think it has something to do with this being a localhost... I'd like to get it to be like the rest of the connects such as, http://app_backend:4000/api/thing-to-call.

Thanks for taking the time to look at this and pointing me in the right direction...

version: '3'
services:
  db:
    image: mysql
    restart: always
    environment:
      MYSQL_DATABASE: 'appdb'
      MYSQL_USER: 'app_user'
      MYSQL_PASSWORD: 'removed_for_this'
      MYSQL_ROOT_PASSWORD: 'removed_for_this'
    ports:
      - '3306:3306'
    expose:
      - '3306'
    volumes:
      - appdb:/var/lib/mysql:Z
    networks:
      - appnet
  redis:
    build:
      context: ./Assets/Docker/redis
    image: registry.location.secret/app:redis
    command: redis-server --requirepass removed_for_this
    ports:
      - '6379:6379'
    container_name: app_redis
    volumes:
      - ./redis-data:/var/lib/redis:Z
      - ./Assets/Docker/redis/redis-dev.conf:/usr/local/etc/redis/redis.conf:Z
    environment:
      - REDIS_REPLICATION_MODE=master
    networks:
      - appnet
  app_backend:
    build:
      context: ./app-backend
    image: registry.location.secret/app:backend
    ports:
      - '4000:4000'
    expose:
      - '4000'
    container_name: app_backend
    volumes:
      - ./app-backend:/app:Z
      - /app/node_modules
      - ./Assets/_dev/backend/.env:/app/.env:Z
    networks:
      - appnet
  app_web:
    build:
      context: ./app-web
    image:
      registry.location.secret/app:web
    ports:
      - '3000:3000'
    container_name: app_web
    stdin_open: true
    volumes:
      - ./app-web:/app/:Z
      - /app/node_modules
      - ./Assets/_dev/web/.env:/app/.env:Z
    networks:
      - appnet
volumes: 
  appdb:
networks:
  appnet:

Here is an example of the ping..

root@f82cc599058d:/app# ping app_backend
PING app_backend (172.19.0.2) 56(84) bytes of data.
64 bytes from app_backend.app_appnet (172.19.0.2): icmp_seq=1 ttl=64 time=0.109 ms
64 bytes from app_backend.app_appnet (172.19.0.2): icmp_seq=2 ttl=64 time=0.080 ms
^C
--- app_backend ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1056ms
rtt min/avg/max/mdev = 0.080/0.094/0.109/0.017 ms
root@f82cc599058d:/app# ping app_backend:4000
ping: app_backend:4000: Name or service not known
question from:https://stackoverflow.com/questions/65905385/docker-compose-container-network-name-or-service-not-known

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

2.1m questions

2.1m answers

60 comments

57.0k users

...