Unable to connect mysql from docker container?

前端 未结 2 1481
野趣味
野趣味 2020-12-06 13:18

I have created a docker-compose file it has two services with Go and Mysql. It creates container for go and mysql. Now i am running code which try

2条回答
  •  Happy的楠姐
    2020-12-06 13:37

    First, if you are using latest version of docker compose you don't need the link argument in you app service. I quote the docker compose documentation Warning: The --link flag is a legacy feature of Docker. It may eventually be removed. Unless you absolutely need to continue using it, https://docs.docker.com/compose/compose-file/#links

    I think the solution is to use the networks argument. This create a docker network and add each service to it.

    Try this

    version: "2"
    services:
      app:
        container_name: golang
        restart: always
        build: .
        ports:
          - "49160:8800"
        networks:
         - my_network
        depends_on:
          - "mysql" 
    
      mysql:
        image: mysql
        container_name: mysql
        volumes:
          - dbdata:/var/lib/mysql
        restart: always
        networks:
         - my_network
        environment:
          - MYSQL_ROOT_PASSWORD=root
          - MYSQL_DATABASE=testDB
          - MYSQL_USER=root
          - MYSQL_PASSWORD=root
        ports:
          - "3307:3306"
    volumes:
      dbdata:
    networks:
      my_network:
        driver: bridge
    

    By the way, if you only connect to Mysql from your app service you don't need to expose the mysql port. If the containers runs in the same network they can reach all ports inside this network.

    If my example doesn't works try this run the docker compose and next go into the app container using docker container exec -it CONTAINER_NAME bash Install ping in order to test connection and then run ping mysql.

提交回复
热议问题