Я пытаюсь запустить локальную среду разработки с несколькими проектами.После некоторой тяжелой работы я наткнулся на этот проект и начал адаптировать его к своим собственным проектам.Каждый проект состоит из 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
.