【发布时间】:2020-02-15 14:19:22
【问题描述】:
Mysql 在它自己的 docker-compose.yml 中,因为我想要一个 mysql 服务器启动并运行,任何其他 php 应用程序都可以连接到它。所以我在同一个docker-compose.yml中没有php和mysql。如果我使用 mysql 容器的网关 IP 地址查找它,然后将其硬编码到 php 应用程序中,我可以从 php 应用程序连接到 mysql。 docker inspect mysql-db。但是 docker 会在每次 mysql 重新启动时更改 172... ip 地址,因此不适合开发。
我可以通过mysql -h 127.0.0.1 连接到 mysql 没问题,但是如果我尝试使用 127.0.0.1 从 php 应用程序我得到连接被拒绝。只有使用 172... 网关 IP 地址才能连接。
如何让 mysql 容器监听从主机到 127.0.0.1 的连接?
docker-compose.yml for mysql
version: "3"
services:
mysql:
container_name: mysql-db
image: mysql
build:
dockerfile: Dockerfile
context: ./server/mysql
environment:
- MYSQL_ROOT_PASSWORD=admin
volumes:
- ./data/mysql:/var/lib/mysql
ports:
- 3306:3306
docker-compose.yml for php
version: "3"
services:
nginx:
container_name: nginx_myapp
image: nginx
build:
dockerfile: Dockerfile
context: ./server/nginx
ports:
- 80:80
- 443:443
volumes:
- ./app:/var/www/html
networks:
- myapp
php:
container_name: php_myapp
image: php:7.3-fpm
build:
dockerfile: Dockerfile
context: ./server/php-fpm
environment:
CI_ENV: development
volumes:
- ./app:/var/www/html
networks:
- myapp
networks:
myapp:
【问题讨论】:
-
this 有帮助吗?
-
@segFault 我想答案可能在某处,但我在这里接受的答案是一个简单的解决方案,我认为最正确的 docker-compose 简单性。
标签: php mysql docker docker-compose