Как передать динамически выставленный порт в контейнере моему приложению? - PullRequest
0 голосов
/ 09 мая 2019

У меня есть такая конфигурация для базы данных в моем проекте akka:

mydb = {
  driver = "com.mysql.jdbc.Driver"
  profile = "slick.jdbc.MySQLProfile$"
  jdbcUrl = "jdbc:mysql://127.0.0.1:3306/play_db?useSSL=false"
  username = "root"
  password = ""
}

Я пытаюсь собрать mysql в контейнере с помощью docker-compose.Однако мне нужно, чтобы порт был динамическим, а не всегда 3306 После запуска «docker-compose», как я могу передать этот открытый порт в мое приложение AKKA?.

Существует ли какой-либо стандартный путь?

1 Ответ

1 голос
/ 09 мая 2019

Одно решение следующее:

  1. Если вам все равно, получите порт mysql, перейдите дальше и перейдите к шагу 2.

    В противном случае определите имя контейнера БД в docker-compose.yml, например, db_container; затем после docker-compose up вы можете использовать:

    docker inspect --format='{{(index (index .NetworkSettings.Ports "80/tcp") 0).HostPort}}' db_container

    для получения динамически измененного хост-порта, который соответствует порту контейнера 3306.

  2. Предположим, что порт, который вы получаете динамически, равен 32768, затем в оболочке, в которой вы запускаете свой проект akka, выполните следующее:

    export MYSQL_PORT=32768
    

    Измените application.conf вашего проекта akka следующим образом:

    jdbcUrl = "jdbc:mysql://127.0.0.1:"${MYSQL_PORT}"/play_db?useSSL=false"
    

    Затем, при запуске проекта akka, он получит порт из переменной среды MYSQL_PORT.

...