从数据库容器访问数据库作为本地主机
我对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
- 警告:无法删除容器“openshift_s2i-build_nodejs-mongo-persistent-
- docker Mule-server curl:(56)Recv失败:连接由对等重置
- Docker PostgreSQL – /docker-entrypoint-initdb.d中的脚本不运行
- docker工中的spring启动应用程序立即终止
- 从docker统计vs cgroups的cpuPercent度量
- Openstack Nova docker实现安全组
- 在Docker容器上运行PHINX迁移时发生PDO连接错误
- 如何testing和部署Docker生产映像?
- 如何将Visual Studio 2015debugging器附加到以前部署的asp.net核心docker容器