【问题标题】:how to set an environment variable when run - az container app compose create运行时如何设置环境变量 - az container app compose create
【发布时间】:2022-08-15 13:38:56
【问题描述】:

似乎当我的 docker compose yml 通过“az containerapp compose create”运行时,环境变量没有被拾取。有没有办法可以设置一个环境变量,以便命令将其拾取?

我看到这个错误:

错误:以下字段无效或缺失。无效值:\"${DOCKER_REGISTRY-}/sample-blazorapp\":无法解析参考:${DOCKER_REGISTRY-}/sample-blazorapp:template.containers.blazorapp.image。

我已将变量设置为: export DOCKER_REGISTRY=\"myregistry\"

当我回显 $DOCKER_REGISTRY 时,将返回该值。所以在 bash 会话中它被设置(我首先尝试了 powershell,我认为这是问题,因为 $(envvar-) 是 bash 语法,但是错误是一样的。)

这是我在撰写文件中的内容(文件中的对齐方式正确):

blazorapp:
container_name: \"blazorapp\"
image: ${DOCKER_REGISTRY-}sample-blazorapp
build:
  context: .
  dockerfile: BlazorApp/BlazorApp/Dockerfile
depends_on:
  - redis
ports:
  - \"55000:443\"

如果我明确设置图像名称,即不使用环境变量,那么它可以工作。即对图像行的这种更改有效:

image: myregistry/sample-blazorapp

我还尝试添加正斜杠,这没有区别(正如预期的那样,在运行 docker compose up 时没有斜杠也可以正常工作)。

我可以明确设置它,但这会很烦人。我觉得我错过了什么。非常感谢任何帮助或指导:)

    标签: docker-compose azure-container-apps


    【解决方案1】:

    如果图像是这样定义到你的 docker compose 文件中的:

    image: ${DOCKER_REGISTRY-}sample-blazorapp
    

    那么您必须在值的末尾使用斜杠导出:

    export DOCKER_REGISTRY="myregistry/"
    

    【讨论】:

    • 感谢您的回答,尽管您可能是正确的,我需要添加斜杠,但主要问题是环境变量根本没有在 docker-compose 文件的上下文中被拾取。它只是按原样读取 {DOCKER_REGISTRY} 作为字符串。
    【解决方案2】:

    我发现了这个问题,我错过了一个冒号。

    不起作用(产生问题中描述的错误):

    image: ${DOCKER_REGISTRY-}sample-blazorapp
    

    也不起作用:

    image: ${DOCKER_REGISTRY-mydefault}sample-blazorapp
    

    添加魔法:在它的工作原理:

    image: ${DOCKER_REGISTRY:-}sample-blazorapp
    

    也有效:

    image: ${DOCKER_REGISTRY:-mydefault}sample-blazorapp
    

    【讨论】:

      猜你喜欢
      • 2020-01-12
      • 2018-09-17
      • 1970-01-01
      • 2020-04-06
      • 2022-11-10
      • 1970-01-01
      • 2019-10-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多