我已经用mysql设置了docker容器,暴露了3306。我已经指定了数据库用户,数据库密码,并创建了一个测试数据库,并将权限给了新用户。
在另一个容器中,我想访问这个数据库。
因此,我使用一个简单php脚本设置了一个新容器,该脚本在这个数据库中创建新的表。
我知道mysql容器的ip是172.17.0.2,所以:
$mysqli = new mysqli("172.17.0.2", "mattia", "prova", "prova");比起使用mysqli,我创建了一个新的表,一切都很好。
但是我认为使用他的ip地址连接到容器是不好的。
有没有其他方法来指定db主机?我尝试了mysql容器的主机名,但它不起作用。
发布于 2017-01-04 12:14:17
您需要在docker run命令中使用--link标志将docker容器链接在一起,或者使用docker-compose中的link功能。例如:
docker run -d -name app-container-name --link mysql-container-name app-image-name这样,docker会将mysql容器的IP地址添加到应用程序容器的/etc/hosts文件中。有关完整的文档,请参阅:MySQL Docker Containers: Understanding the basics
发布于 2019-01-03 15:06:42
--link标志被视为传统功能,您应该使用用户定义的网络。
您可以在同一网络上运行这两个容器:
docker run -d --name php_container --network my_network my_php_image
docker run -d --name mysql_container --network my_network my_mysql_image该网络上的每个容器将能够使用容器名称作为主机名来相互通信。
发布于 2019-03-05 16:42:43
在您的docker-compose.yml文件中,向您的add服务器服务添加一个链接属性:https://docs.docker.com/compose/networking/#links
然后在您的查询字符串中,host参数的值是您的数据库服务名称:
$mysqli = new mysqli("database", "mattia", "prova", "prova");https://stackoverflow.com/questions/35429920
复制相似问题