#docker #nginx #docker-compose #mariadb
#docker #nginx #docker-compose #mariadb
Вопрос:
У меня есть два стека / проекта контейнеров :
- Первый — это полный стек приложений PHP / Nginx / Mariadb, который работает сам по себе. Он находится в собственном файле docker-compose.
- Второе — это приложение PHP / Nginx без собственной базы данных в отдельном файле docker-composer. Я хочу, чтобы он подключался к контейнеру базы данных первого стека.
Я запустил 2 стека, они работают нормально сами по себе, но я не могу получить доступ к БД.
Я предполагаю, что это связано с тем, что контейнер работает в виртуальной локальной сети, и мне нужно создать VLAN между 2 контейнерами. Также я должен добавить, что я никак не могу отредактировать первый проект, я могу редактировать только свой локальный проект (второй).
С уважением,
Комментарии:
1. Использование отдельной базы данных для каждого проекта — типичная настройка микросервиса; почему бы не добавить отдельную базу данных во вторую настройку Compose?
2. Потому что идея второго проекта заключается в доступе к данным той же базы данных, что и первый проект. Чтобы не дублировать их.
Ответ №1:
Что ж, я предлагаю вместо того, чтобы устанавливать Db в первый контейнер, а затем пытаться подключить к нему ваш второй проект, установить его в другой контейнер.
Это делает три разных контейнера. Два для ваших проектов, а третий только для вашего MariaDB.
Теперь для подключения к этой базе данных:
создайте сеть в Docker и добавьте в нее эти три контейнера.
Для этого выполните эту команду:
Create docker network <'network name'>
В ваших файлах docker-compose добавьте это в конце созданной вами службы:
networks:
- <'network name'>
и в конце файла добавьте это:
networks:
<'network name'>:
external: true
Комментарии:
1. БД находится в отдельном контейнере в первом проекте, если я правильно понимаю Docker. Первый проект основан на 3 контейнерах : Nginx, php code и MariaDB. Второй проект — это другой Nginx и phpcode. Я предполагаю, что реальная проблема, как вы сказали во второй раз, проблема с сетью.
2. Ну, вы путаете контейнеры и изображения вместе. В вашем первом контейнере у вас есть 3 изображения. На вашем месте я бы сделал это, ваша настройка будет намного проще. Просто установите PHP на два контейнера. Установите Mariadb на третий контейнер. Выполните описанные выше действия, чтобы соединить ваши контейнеры вместе. И вместо того, чтобы использовать Nginx в каждом контейнере, просто установите его на свой компьютер. и в ваших контейнерах перенаправьте порты, на которых запущен ваш проект (если это внутренний проект). А затем в ваших файлах Nginx попросите его прослушивать эти порты.
3. Хорошо, спасибо за разъяснение. Я попробую это.