dongshuql24533
dongshuql24533
2019-03-02 04:15

Docker-Compose服务无法通信

已采纳

Docker noob alert. Hope this isn't a dumb question but I cannot seem to figure out what is going on. I am trying to create a docker-compose file which creates a mysql db with a mounted volume and a go webserver app that connects to the mysql db.

Here is my docker-compose file:

services:
  db:
    image: mysql:8.0.2
    environment: 
      MYSQL_ROOT_PASSWORD: test
      MYSQL_DATABASE: northernairport
    ports:
      - "3306:3306"
    volumes:
      - /data:/var/lib/mysql
  web:
    depends_on:
      - db
    build: .
    ports:
      - "8080:8080"

My go application can't seem to connect to my mysql db though, I thought the "depends_on" would ensure this was possible.

Error I get:

panic: dial tcp 127.0.0.1:3306: getsockopt: connection refused

Can anyone tell me what I am doing wrong here? Thanks.

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • dongyi1441 dongyi1441 2年前

    The depends_on only controls the build and startup order for the services.

    Your actual issue is more likely that you are using the wrong address from your web application to your database. I see that you have not defined any networks, so you are using the default network created for your application by docker-compose. This will publish each service by name on the default network's DNS.

    So, your web application should probably be using db:3306 as the database address, not localhost:3306 or 127.0.0.1:3306 as indicated in the error message.

    点赞 评论 复制链接分享
  • douzhangli9563 douzhangli9563 2年前

    The ports part is used to map container ports with host in following format ports (HOST:CONTAINER). Which means that you are trying to access host's machine, configure web app to connect to db:3306 instead.

    点赞 评论 复制链接分享

相关推荐