首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从其他容器访问mysql容器

问从其他容器访问mysql容器
EN

Stack Overflow用户
提问于 2016-02-16 18:25:28
回答 3查看 47.7K关注 0票数 30

我已经用mysql设置了docker容器,暴露了3306。我已经指定了数据库用户,数据库密码,并创建了一个测试数据库,并将权限给了新用户。

在另一个容器中,我想访问这个数据库。

因此,我使用一个简单php脚本设置了一个新容器,该脚本在这个数据库中创建新的表。

我知道mysql容器的ip是172.17.0.2,所以:

代码语言:javascript
复制
$mysqli = new mysqli("172.17.0.2", "mattia", "prova", "prova");

比起使用mysqli,我创建了一个新的表,一切都很好。

但是我认为使用他的ip地址连接到容器是不好的。

有没有其他方法来指定db主机?我尝试了mysql容器的主机名,但它不起作用。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-01-04 12:14:17

您需要在docker run命令中使用--link标志将docker容器链接在一起,或者使用docker-compose中的link功能。例如:

代码语言:javascript
复制
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

票数 26
EN

Stack Overflow用户

发布于 2019-01-03 15:06:42

--link标志被视为传统功能,您应该使用用户定义的网络。

您可以在同一网络上运行这两个容器:

代码语言:javascript
复制
docker run -d --name php_container --network my_network my_php_image

docker run -d --name mysql_container --network my_network my_mysql_image

该网络上的每个容器将能够使用容器名称作为主机名来相互通信。

票数 50
EN

Stack Overflow用户

发布于 2019-03-05 16:42:43

在您的docker-compose.yml文件中,向您的add服务器服务添加一个链接属性:https://docs.docker.com/compose/networking/#links

然后在您的查询字符串中,host参数的值是您的数据库服务名称:

代码语言:javascript
复制
$mysqli = new mysqli("database", "mattia", "prova", "prova");
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35429920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档