从数据库容器访问数据库作为本地主机

我对Docker挺新的,但是我试图用它来清理我的一些项目。 一个这样的项目是一个相当简单的PHP / MySQL应用程序。 我已经通过添加docker-compose.yml与db和php服务“docker-ized”应用程序。 这是我的docker-compose.yml:

version: '2' services: php: build: . ports: - "80:80" - "443:443" volumes: - ./public_html:/var/www/html links: - db db: image: mysql:5.5 ports: - "3306:3306" environment: MYSQL_USER: root MYSQL_PASSWORD: MYSQL_ROOT_PASSWORD: MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' volumes: - /c/dockerdata:/var/lib/mysql 

这工作正常,但是我必须改变我所有的PHP脚本连接到MySQL数据库时使用“db”而不是“本地主机”。 我添加docker的东西只是为了清理开发,所以我试图避免改变PHP代码本身。 有没有一种方法,我可以configuration这个,所以我能够使用本地或127.0.0.1连接?

Docker不允许你修改容器上的/ etc / hosts 已知的问题

您可以使用入口点选项编辑/ etc / hosts

创buildentrypoint.sh脚本

 #!/bin/bash cp /etc/hosts /tmp/hosts sed -e '/localhost/ s/^#*/#/' -i /tmp/hosts cp /tmp/hosts /etc/hosts # add your command here to run php application 

将执行权限添加到entrypoint.sh

 chmod +x entrypoint.sh 

将下面两行添加到Dockerfile

 ADD entrypoint.sh /entrypoint.sh ENTRYPOINT /entrypoint.sh 

现在做我以前的答案的步骤2)。

您可以使用以下两个步骤来实现此目的

1)将下面的CMD添加到您的Dockerfile中

CMD sed -e '/localhost/ s/^#*/#/' -i /etc/hosts

2)在docker-compose.yml中用'localhost'replace'db'

links: - db db: image: mysql:5.5

links: - localhost localhost: image: mysql:5.5