Как подключить Flyway, работающий в контейнере Docker, к базе данных, работающей в контейнере Docker? - PullRequest
1 голос
/ 05 марта 2019

Мы используем Microsoft SQL Server в качестве базы данных и Flyway для управления им.Теперь я хотел бы протестировать сценарии Flyway, запустив SQL Server в Docker и Flyway в моем собственном контейнере Docker, который содержит всю конфигурацию и все сценарии базы данных Flyway (миграции).

Насколько я знаю, этоневозможно использовать переменные окружения в файлах конфигурации Flyway.В идеале это было бы возможно:

flyway.url=jdbc:sqlserver://${MSSQL_SERVICE_HOST}:${MSSQL_SERVICE_PORT};databaseName=testing_pp
flyway.user=testing_pp
flyway.password=${MSSQL_SERVICE_PASSWORD}

На самом деле мне нужно знать лучшую стратегию для автономного Docker и OpenShift.Я довольно плохо знаком с обоими ...

Есть ли способ ввести IP-адрес и порт из одного работающего контейнера Docker в другой?Тот, который не включает Docker Compose?И как правильно сделать это в OpenShift?Я знаю, что модули получают хосты и порты от всех работающих модулей как переменные среды (см. Мое гипотетическое решение).Но эти переменные не разрешены, это не решает мою проблему.

Как вы проводите такие тесты?

1 Ответ

1 голос
/ 05 марта 2019

Если я вас правильно понял, вопрос в том, как соединить два док-контейнера без docker-compose.На самом деле docker-compose не добавляет много в этих терминах - он просто автоматизирует несколько шагов.

Чтобы соединить контейнеры, вам необходимо:

  1. Создать новое, определенное пользователемМостовая сеть (выполняется один раз): docker network create foo

  2. Подключите оба контейнера к этой сети с помощью --network=foo опция запуска

  3. Вместо этого укажите имена контейнеровавтоматически сгенерированный с --name=xyz

  4. Используйте эти имена вместо IP-адреса в строках подключения.

    docker network create foo
    docker run -d --rm --name=my-database --network=foo <SQLServerImageName>
    docker run -d --rm --name=my-flyway --network=foo <FlyWayImageName>
    

Теперь вы можете подключиться изFlyway to SQL с server=my-database

...