scala - 如何将容器中的动态暴露端口传递给我的应用程序?
问题描述
我在我的 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 应用程序?
存在任何标准方式吗?
解决方案
接下来是一个解决方案:
如果您不在乎获取 mysql 的端口,请通过 next 并转到第 2 步。
否则,在 中定义 db 容器的名称
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
修改
application.conf
您的 akka 项目,如下所示:jdbcUrl = "jdbc:mysql://127.0.0.1:"${MYSQL_PORT}"/play_db?useSSL=false"
然后,当 akka 项目启动时,它会从环境变量中获取端口
MYSQL_PORT
。
推荐阅读
- python-3.x - Why am I getting an ValueError: too many file descriptors in select()?
- sql-server - 如何获得学生期末最高分
- amazon-web-services - AWS AppSync 在创建新项目时将多个子项添加到一个父属性中
- java - Java - 减少代码重复 - 一般编码问题
- google-places-api - 谷歌将 sdk 迁移到新的 sdk android
- c - 为什么我在hackerrank中收到此消息“〜stdout上没有响应〜”?我不知道我错过了什么>
- memory - 如何为STM32L475板交换闪存中的两个区域?
- javascript - 无法获取 url 参数
- python - 如何将键移入值和索引作为apache日志中字典中的键
- terminal - 无法在 vs 代码中输入终端