dongshuql24533 2019-03-02 04:15
浏览 327
已采纳

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 2019-03-02 05:24
    关注

    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.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?