${DOCKER_REGISTRY-} 在哪里设置

Max*_*lov 13 environment-variables docker docker-compose asp.net-core visual-studio-mac

在 Visual Studio for Mac 中新建一个 ASP.NET Core 3 项目,然后右键单击该项目并选择 Add - Docker Support,IDE 将 docker-compose 项目添加到解决方案中,并为 API 项目搭建 dockerfile。

默认情况下,docker-compose 具有以下条目:

services:
  project-name:
    image: ${DOCKER_REGISTRY-}projectname
  ...
Run Code Online (Sandbox Code Playgroud)

它开箱即用,dockerfile 得到处理,compose 被调用,一切都很好。但是“组合 + 调试”过程中的哪个实体定义了 DOCKER_REGISTRY 变量的值?

kit*_*sei 11

这是您的电脑或远程服务器上的环境变量,请尝试输入:

$ echo $DOCKER_REGISTRY

Run Code Online (Sandbox Code Playgroud)

docker 条目的意思是“如果变量 DOCKER_REGISTRY 未设置或为空,则使用默认值”,然后它会被添加到您的项目名称之前。

参数扩展请参见https://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_06_02


Mat*_*ola 9

来自文档:https://docs.docker.com/compose/compose-file/#interpolation

仅当环境中未设置 VARIABLE 时,${VARIABLE-default} 才会计算为默认值。

对于您生成的文件${DOCKER_REGISTRY-}projectname

  • 如果设置了 DOCKER_REGISTRY,请输入“docker.io/”
    • 镜像名称为“docker.io/projectname”
  • 如果 DOCKER_REGISTRY 未设置
    • 图像名称为“projectname”
      • 这个简写名称也默认为 dockerregistry,因此除非将 DOCKER_REGISTRY 设置为默认注册表之外的其他内容,否则您不会看到差异。

“组合+调试”过程中哪个实体定义了 DOCKER_REGISTRY 变量的值?

我不认为它正在定义变量的值。它将您的撰写文件设置为支持使用 DOCKER_REGISTRY 的设置,以一致地控制所使用的所有图像的相同注册表。