docker的mysql不能连接到容器

我有docker-compose文件来创buildmysql映像并将端口暴露给3306,但是当我尝试安装CMS时,它给了我错误,它无法连接到数据库。 我试图扫描端口3306,它显示它已经打开,所以mysql正在运行。

为什么两个docker集装箱不能看到对方?

这是我的docker-compose文件:

phpfpm: restart: always extends: file: php-fpm-5.6.yml service: phpfpm links: - db:db nginx: restart: always image: nginx ports: - "8000:80" links: - phpfpm:phpfpm volumes: - ./nginx/vhost.conf:/etc/nginx/conf.d/default.conf - ./app:/var/www/html - ./log/nginx:/var/log/nginx db: restart: always image: mysql ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: 123456 MYSQL_USER: user MYSQL_PASSWORD: password MYSQL_DATABASE: database 

要连接到数据库,请使用您提供的链接/别名作为主机名。 因此,您可以使用db作为主机名连接到MySQL,并使用端口3306。

你不能连接到本地主机或127.0.0.1,因为“localhost”是每个容器内的本地主机,所以在phpfpm容器中使用“localhost”将尝试连接到phpfpm容器内的MySQL数据库,但是没有服务器在那里运行。

请注意,如果仅从链接容器内连接到数据库,则不必发布"3306":"3306" )MySQL端口。 公开的networking接口上公开的MySQL端口可能是“互联网”