【发布时间】:2021-06-27 14:38:28
【问题描述】:
我想知道是否可以将参数或环境变量提供给 AppEngine 使用的 Dockerfile(弹性环境)。
我想使用这个命令:
COPY ${STAGE}/keycloak-files/realm-config/* /opt/jboss/keycloak/realm-config/
“STAGE”变量允许选择来源(我有一个“staging”和“production”目录,包含不同的配置)。
我有两个不同的app.yml 文件,每个环境一个,但根据我在线阅读的内容,环境变量在构建时不会暴露给 Dockerfile。
人们建议传递参数来完成任务。但是我们不直接执行 docker build 命令的 appengine 怎么可能呢?
【问题讨论】:
-
使用预定义的 Docker 镜像可以解决问题吗?我突然想到,也许你可以构建你的 Docker 并使用 gcloud app deploy image-url 标志:cloud.google.com/sdk/gcloud/reference/app/deploy#--image-url
-
是的,我看到了那个选项...我不知道这是否是最好的解决方案,我正在 Dockerfile 中进行与目标环境相关的操作(参见示例代码)。我暂时将项目复制到“staging”和“production”文件夹中,每个文件夹都有 Dockerfile 和 app.yml。一点也不优雅,但目前看来还可以。使用“image-url”标志而不是这个标志有什么好处?
-
阅读(旧)相关的 SO 帖子,我看到在本地构建 docker 容器,将其推送到 gcr.io,然后使用 --image-url 标志,可能是一种可能的解决方法。不确定它是否会在您的情况下提供任何优势。帖子:stackoverflow.com/questions/33913525/…
-
这是一个可能的选择,但是有区别,如果你在本地构建一个镜像,我不确定构建是否发生在你的本地环境中,然后它被推送到 gcr.io,或者它建在那里。使用常规的 Dockerfile + app.yaml 部署会更快,因为您不需要上传任何文件。至少,我认为你没有:-)
-
@DamPlz 我刚刚完成了部署,并阅读了输出,看起来“正常”部署和指定 docker 映像之间没有区别。顺便说一句,为登台和生产环境提供不同的文件夹并不是那么糟糕,因为它们与您的服务器对齐。目前这对我来说是一个很好的解决方案。谢谢!
标签: docker google-app-engine environment-variables dockerfile app-engine-flexible