在同一主机上的两个容器之间的通信

我必须设置一个testing环境,我有一个Web应用程序容器和一个MySql容器。 Web应用程序连接到MySql DB来获取一些数据来显示。 我已经写了一个泊坞窗撰写文件,当我执行它创build2个容器在同一个桥梁networking,但仍然无法从Web应用程序容器访问数据库。 我正在AWS EC2 Amazon Linux机器上运行此操作。 尽pipe我可以使用相同的用户凭据从服务器连接到数据库。

version: '2' services: consul: image: "gliderlabs/consul-server" command: "-server -bootstrap" hostname: consul container_name: consul ports: - "8400:8400" - "8500:8500" - "172.17.0.1:53:8600/udp" networks: - my_net registrator: image: "gliderlabs/registrator" command: "-internal consul://172.17.0.1:8500" container_name: registrator hostname: registrator volumes: - /var/run/docker.sock:/tmp/docker.sock depends_on: - consul networks: - my_net db: image: "mysql:5.5" container_name: mysql hostname: mysql volumes: - ./mydb:/docker-entrypoint-initdb.d environment: MYSQL_ROOT_PASSWORD: xxxx depends_on: - registrator ports: - 3306:3306 networks: - my_net web: build: . depends_on: - db - consul ports: - 8080:8080 volumes: - .:/code networks: - my_net networks: my_net: driver: bridge 

连接代码:

 cnx = mysql.connector.connect(host='{0}'.format(db_host),user="root",passwd="xxxx",db="mysql") if cnx.is_connected(): print(' Success! Connected to MySQL database') db_host = will be taken from consul dns query 

我正在从consul dns查询中得到mysql容器的正确桥接IP。