我想在php中使用localhost时指向mysql容器的ip而不是指向自身,所以我可以使用mysql容器来获取数据。
如何在我的php调用mysql中使用localhost
$mysqli = new mysqli("localhost", "root", "examplepass", "set", 3306);
除非我使用db作为主机名,否则上述代码将无效。
db:
image: mariadb
container_name: mariadb
environment:
MYSQL_ROOT_PASSWORD: examplepass
www:
build: ./images/www
links:
- db:mysql
ports:
- 8080:80
我是否必须通过Dockerfile以某种方式更改容器中的hosts文件或撰写yaml?
答案 0 :(得分:0)
这将按预期工作,但www
将在其监听的位置(80,而不是8080):
version: "2"
services:
db:
image: mariadb
container_name: mariadb
environment:
MYSQL_ROOT_PASSWORD: examplepass
network_mode: "host"
www:
build: ./images/www
links:
- db
network_mode: "host"
使用network_mode: "host"
,假设容器获得与您的主机相同的本地主机。
将mysql bind-address
配置为localhost
,以避免在主机外暴露mysql。