Mysql находится в своем собственном docker -compose.yml, так как я хочу, чтобы сервер mysql был запущен и работал, к которому может подключиться любое другое приложение php. Поэтому у меня нет php и mysql в одном docker -compose.yml. Из приложения php я могу подключиться к mysql, если я использую IP-адрес шлюза контейнера mysql, просмотрев его и затем жестко запрограммировав его в приложение php. docker inspect mysql-db
. Но docker будет изменять этот 172 ... IP-адрес каждый раз, когда mysql перезапускается, так что это не идеально для разработки.
Я могу подключиться к mysql через mysql -h 127.0.0.1
без проблем, но из php приложение, если я пытаюсь использовать 127.0.0.1, я получаю отказано в соединении. Я могу подключиться, только если я использую IP-адрес шлюза 172 ...
Как получить контейнер mysql, прослушивающий соединения с хоста на 127.0.0.1?
docker -compose.yml для 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 для 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: