Доступ к MySQL Connection запрещен, но только в 50% случаев в Docker с Nginx-Proxy

Я пытаюсь запустить локальную среду разработки с несколькими проектами.
После некоторой тяжелой работы я наткнулся на этот проект , и начал адаптировать его к моим собственным проектам.
Каждый проект состоит из 2-х контейнеров, MySQL-контейнера и PHP-контейнера (из php-apache образ).

nginx-proxy это отдельный контейнер, работающий в сети. Я слегка переименовал проект, поэтому здесь он называется dev-router_default,

Мой проект compose.yml выглядит так:

version: "3"services:
php:
build: './.docker/php/'
volumes:
- .:/var/www/html/
environment:
- VIRTUAL_HOST=XXX.local
mysql:
build: './.docker/mysql/'
ports:
- "3309:3306"environment:
MYSQL_DATABASE: XXX
MYSQL_USER: XXX
MYSQL_PASSWORD: XXX
MYSQL_ROOT_PASSWORD: XXX
VIRTUAL_HOST: XXX.local
networks:
default:
external:
name: dev-router_default

dockerfiles в этих папках просто основные изображения прямо сейчас. Они просто существуют, поэтому я могу увеличить их позже.

Все работает довольно гладко. Я могу получить доступ к БД, я могу загрузить HTML и PHP-страниц.
Тем не мение. Всякий раз, когда я загружаю страницу. У меня есть 50% шанс получить эту ошибку:

SQLSTATE[HY000] [1045] Access denied for user

Остальные 50% загрузок страниц работают просто отлично.
Это не проблема с неправильным паролем или что-то еще. Все настройки остаются прежними, но как-то одно соединение отклоняется, а другое проходит.

У меня есть чувство, что nginx-proxy не перенаправляет мой трафик на правильный контейнер mysql половину времени. Но я не могу найти, куда звонят. Когда я загружаю страницу, я вижу в своем CLI контейнера всплывающее окно журнала для загрузки php_1. Но mysql_1 молчит.

Кто-нибудь знает, что является причиной этого несоответствия?

Есть ли более простой способ настроить среду разработки с помощью докера, который одновременно использует несколько виртуальных хостов / доменов?

Мне нужно иметь возможность доступа к нескольким базам данных (я делаю это, давая каждому проекту определенный порт для прохождения прямо сейчас), и получаю уникальный URL для каждого проекта, привязанного к document_root,

1

Решение

Проблема была в названии сервиса.
Все проекты имеют php и MySQL-контейнер.
Я получаю доступ к mysql HOST через имя службы (которая в данном случае является mysql для всех проектов).
Хост «mysql» был определен несколько раз в нескольких проектах.
Именование контейнера mysql имя_проекта-mysql исправило это.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]