Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何为Docker Compose中运行的SBT提供环境变量?_Scala_Docker_Docker Compose_Playframework_Sbt - Fatal编程技术网

Scala 如何为Docker Compose中运行的SBT提供环境变量?

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}" 我可以在紧要关头这样做,但我更愿

我试图通过Docker Compose运行一个Play Framework Scala应用程序,我想为它提供环境变量。不幸的是,当我通过
环境
提供它们时,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