Я построил docker -композицию с 3 сервисами: db
, nginx
, selenium
. Приложение, размещенное на nginx, связывается с базой данных (nginx
<-> db
) и приложением для тестирования селена (selenium
-> app
).
version: '3'
services:
nginx:
image: <my_private_repo>/nginx
...
db:
image: <my_private_repo>/db
# nginx cannot communicate with db after I remove exposing port 3306
ports:
- "3306:3306"
...
selenium:
image: joyzoursky/python-chromedriver:3.8-selenium
command: "bash seleniumScript.sh"
depends_on:
- nginx
- db
Я запускаю свои тесты с docker-compose run selenium
Все работает, когда я выставляю порт базы данных, но когда я прекращаю выставлять порт 3306 nginx не может обмениваться данными с БД.
Насколько я понимаю, все службы в рамках одной docker -композитной настройки автоматически подключаются и пользователю не нужно создавать какие-либо дополнительные сети, но я, очевидно, был неправ.
У меня вопрос: как настроить порты между службами, не выставляя их на хост-машину?
Обновление: Мой nginx приложение настроило хост базы данных для имени службы db
. Настройка скрипта Selenium заполнить базу данных, используя db
host и тестировать приложение nginx через https://nginx
url.