Scala 如何为Docker Compose中运行的SBT提供环境变量?
我试图通过Docker Compose运行一个Play Framework Scala应用程序,我想为它提供环境变量。不幸的是,当我通过Scala 如何为Docker Compose中运行的SBT提供环境变量?,scala,docker,docker-compose,playframework,sbt,Scala,Docker,Docker Compose,Playframework,Sbt,我试图通过Docker Compose运行一个Play Framework Scala应用程序,我想为它提供环境变量。不幸的是,当我通过环境提供它们时,SBT没有接收它们: environment: - http.port=${PORT} 其中,我在同一目录下的.env文件中有PORT=1234 但是,当我将它们作为命令的一部分提交时,它工作得很好: command: "sbt run -Dhttp.port=${PORT}" 我可以在紧要关头这样做,但我更愿
环境
提供它们时,SBT没有接收它们:
environment:
- http.port=${PORT}
其中,我在同一目录下的.env
文件中有PORT=1234
但是,当我将它们作为命令的一部分提交时,它工作得很好:
command: "sbt run -Dhttp.port=${PORT}"
我可以在紧要关头这样做,但我更愿意在环境中设置变量
那么我做错了什么呢?-Dx=y
是通过CLI向JVM传递标志的方法,但这并不意味着JVM需要y
环境变量
您在命令中正确定义了变量:
command: "sbt run -Dhttp.port=${PORT}"
这意味着您必须提供PORT
变量(而不是http.PORT
!)。应该是:
environment:
- PORT=${PORT}
或者(因为名称在docker内部和外部):
这似乎应该奏效。docker compose config的输出是什么?参考:谢谢你的指点。我看到http.port:'1234'
,这就是我想要的。更不用说,docker compose run web env
也显示了同样的情况。我想知道这是否是SBT的事情。。。
environment:
- PORT