gpt4 book ai didi

docker - 我可以在 Dockerfile FROM 语句中引用环境变量吗?

转载 作者:行者123 更新时间:2023-12-02 21:05:43 25 4
gpt4 key购买 nike

我想做的是:

FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-alpine
# more stuff

但是,这需要在无法访问互联网的隔离的干净构建机器上运行,因此我需要通过本地镜像服务器(例如 Artifactory 或 Nexus 或其他类似的东西)路由它

如果 docker 镜像托管在 docker hub 上(例如来自 ubuntu),那么 --registry-mirrors docker 配置选项将为我们解决这个问题。
但是因为微软决定不使用 docker hub,所以注册表镜像也不起作用。

经过一番努力,我已经为 mcr.microsoft.com 设置了一个自定义域镜像,所以现在我可以执行以下操作:

FROM microsoft-docker-mirror.local.domain/dotnet/core/aspnet:3.0-alpine
# more stuff

这有效。但是我们有远程工作人员,他们可能不在本地办公室 LAN 上,并且看不到我的本地镜像服务器。我现在想做的是根据环境改变它。例如

ENV MICROSOFT_DOCKER_REPO mcr.microsoft.com
FROM ${MICROSOFT_DOCKER_REPO}/dotnet/core/aspnet:3.0-alpine

我的独立构建计算机将设置 MICROSOFT_DOCKER_REPO 环境变量,而其他人的计算机将使用默认的 mcr.microsoft.com

无论如何。将 ENV 行添加到 dockerfile 会导致 docker 抛出此错误:

Error response from daemon: No build stage in current context

似乎有很多引用资料表明 FROM 行必须是文件中的第一行,甚至在任何注释之前......如何在 FROM 语句中引用环境变量?或者,如何使注册表镜像适用于 docker hub 之外的事物?

谢谢!

最佳答案

ARGDockerfile 中唯一可以位于 FROM 之前的指令”- Dockerfile reference .

ARG MICROSOFT_DOCKER_REPO=mcr.microsoft.com
FROM ${MICROSOFT_DOCKER_REPO}/dotnet/core/aspnet:3.0-alpine

使用 --build-arg 使用非默认 MICROSOFT_DOCKER_REPO 进行构建:docker build --rm --build-arg MICROSOFT_DOCKER_REPO=repo.example .com -t so:58196638 .

注意:您可以从主机环境传递 --build-arg,即 MICROSOFT_DOCKER_REPO=repo.example.com docker build --rm -- build-arg MICROSOFT_DOCKER_REPO=${MICROSOFT_DOCKER_REPO} -t so:58196638 。

关于docker - 我可以在 Dockerfile FROM 语句中引用环境变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58196638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com