在docker中使用localhost而不是db作为mysql主机名
我想在php中使用localhost指向mysql容器的IP,而不是指向自己,所以我可以使用mysql容器的数据。
如何可以使用本地主机在我的PHP调用到MySQL
$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吗?
这将会像你期望的那样工作,但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"
,比方说,容器获得与你的主机相同的本地主机。
configurationmysql bind-address
到localhost
以避免在主机外面暴露MySQL。