У меня странная проблема с докеризацией приложения Laravel для локального разработчика. Контейнеру PHP необходим внутренний IP-адрес docker для контейнера mysql, в отличие от 127.0.0.1, в противном случае он прерывается следующим сообщением:
SQLSTATE[HY000] [2002] Connection refused (SQL: select * from `users` where `email` = jr@m3u.com limit 1)
Если Я использую команду inspect: docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
Я вижу 172 диапазона IP-адресов для каждого контейнера, и если я изменю сервер mysql на 172.31.0.2 в файле * .env Laravel, тогда приложение работает нормально.
Вот мой файл docker -compose.yml:
version: '3'
networks:
laravel:
services:
nginx:
image: nginx:stable-alpine
container_name: nginx
ports:
- "8888:80"
volumes:
- ../src:/var/www
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
- mysql
networks:
- laravel
mysql:
image: mysql:5.7.22
container_name: mysql
restart: unless-stopped
tty: true
ports:
- 3310:3306
environment:
MYSQL_DATABASE: docker
MYSQL_USER: docker
MYSQL_PASSWORD: docker
MYSQL_ROOT_PASSWORD: root
SERVICE_TAGS: dev
SERVICE_NAME: mysql
volumes:
- ./mysql:/var/lib/mysql
networks:
- laravel
php:
build:
context: .
dockerfile: Dockerfile
container_name: php
volumes:
- ../src:/var/www
ports:
- "9000:9000"
networks:
- laravel
Любая помощь будет оценена. : -)