首页 > 解决方案 > 如何将 PORT 的 Google Cloud 环境变量传递给 Play Framework 服务器

问题描述

我已经开始使用Google Cloud Platform,所以我可以部署我的Scala Play Framework项目。我正在使用docker创建一个docker image推送到 Google Cloud Platform 并使用Cloud Run. docker 映像在我的本地计算机上成功运行,但是当我尝试在 google 上部署它时,我收到此错误:

Cloud Run 错误:容器无法启动。无法启动并侦听 PORT 环境变量定义的端口。此修订的日志可能包含更多信息。

我已经阅读Play 2.7's了文档,并且得到了这个 Dockerfile:

FROM aa8y/sbt:0.13.15

COPY ./target/universal/scalatry-1.0.zip .

RUN unzip scalatry-1.0.zip

COPY ./main_route .

CMD scalatry-1.0/bin/scalatry -Dhttp.port=${PORT}

所以基本上,我正在尝试运行压缩的项目文件(我使用创建的)并通过传递将在谷歌上运行项目时传递的变量来scala dist运行可执行文件。这似乎不起作用。/bin/scalatry${PORT}

我所做的另一个尝试是转到我的application.conf文件并添加: play.server.http.port = ${PORT}但它也没有任何影响,这个错误不断弹出。

你有什么工作吗?先感谢您!

标签: dockergoogle-cloud-platformplayframeworkdockerfile

解决方案


您可以使用以下命令在 Cloud Run 中传递环境变量:

gcloud run deploy [SERVICE] --image gcr.io/[PROJECT-ID]/[IMAGE] --update-env-vars KEY1=VALUE1,KEY2=VALUE2

所以你会运行类似的东西

gcloud run deploy [YOUR-SERVICE-NAME] --image gcr.io/[PROJECT-ID]/[DOCKER-IMAGE] --update-env-vars PORT=PORTNUMBER

您可以在此处阅读有关如何在 CLoud Run 中使用环境变量的更多信息:https ://cloud.google.com/run/docs/configuring/environment-variables

希望这可以帮助。


推荐阅读