我在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 = ""
}
我正在尝试通过使用docker-compose在容器中构建mysql。 但是,我需要端口是动态的,而不是总是3306 运行“ docker-compose up”后,如何将这个暴露的端口传递给我的AKKA应用程序?
存在任何标准方式吗?
答案 0 :(得分: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端口。
让我们假设您动态获取的端口是32768
,然后在启动akka项目的shell中,执行下一步:
export MYSQL_PORT=32768
接下来修改您的akka项目的application.conf
:
jdbcUrl = "jdbc:mysql://127.0.0.1:"${MYSQL_PORT}"/play_db?useSSL=false"
然后,当akka项目启动时,它将从环境变量MYSQL_PORT
获取端口。