我想做的是:
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-alpine
# more stuff
但是,这需要在没有互联网访问权限的隔离干净构建机器上运行,所以我需要通过本地镜像服务器(例如 Artifactory 或 Nexus 或其他类似的东西)路由它
如果 docker 映像托管在 docker hub 上(例如 FROM 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 的东西?
谢谢!