从另一个容器连接到mysql容器

我试图连接到一个MySQL容器从另一个容器在一个合成文件指定的同一networking。

version: "2" services: web: build: context: . dockerfile: nginx/Dockerfile ports: - "8080:80" volumes: - ./data:/srv php: build: context: . dockerfile: php-fpm/Dockerfile volumes: - ./data:/srv mysql: image: mysql environment: - MYSQL_ALLOW_EMPTY_PASSWORD=yes - MYSQL_USER=dummy_user - MYSQL_PASSWORD=12345 

我不确定连接参数是什么,如果我试图从PHP容器连接到MySQL容器。

具体来说,在同一个docker-composenetworking的另一个容器中,mysql容器的主机和端口是什么?

我试过主机:MySQL端口:3306,但似乎并没有工作。

你应该链接容器。 添加端口部分到MySQL容器和链接部分到PHP容器。

 version: "2" services: web: build: context: . dockerfile: nginx/Dockerfile ports: - "8080:80" volumes: - ./data:/srv php: build: context: . dockerfile: php-fpm/Dockerfile links: - mysql:mysql volumes: - ./data:/srv mysql: image: mysql ports: - "3306:3306" environment: - MYSQL_ALLOW_EMPTY_PASSWORD=yes - MYSQL_USER=dummy_user - MYSQL_PASSWORD=12345 

有了这个configuration,你将可以通过mysql访问mysql容器:3306

一些文档: https : //docs.docker.com/compose/networking/#updating-containers

你不会共享mysql的端口

添加到你的docker-compose.yml到mysql服务:

 ports: - "3306:3306" 

UPD

尝试设置你的mysql容器的环境

 MYSQL_ROOT_PASSWORD: 123456 MYSQL_USER: dev MYSQL_PASSWORD: 123456 MYSQL_DATABASE: myapp 

 $link = mysqli_connect("mysql", "dev", "123456", "myapp"); 

应该正常工作