Доступ к MySQL Connection запрещен, но только в 50% случаев в Docker с Nginx-Proxy - PullRequest
0 голосов
/ 28 сентября 2018

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

0 голосов
/ 20 ноября 2018

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

...