То, что я хотел бы сделать, это:
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-alpine
# more stuff
Но это должно выполняться на изолированной машине с чистой сборкой, которая не имеет доступа к Интернету, поэтому мне нужно направить ее через локальныйзеркальный сервер (например, Artifactory или Nexus или другая подобная вещь)
Если образ докера был размещен на док-концентраторе (например, FROM Ubuntu), тогда опция конфигурации --registry-mirrors docker
решит его для нас.
НО, потому чтоMicrosoft решила не использовать докер-концентратор, зеркальное отображение реестра тоже не работает.
После долгих усилий я настроил настраиваемое зеркальное отображение домена для mcr.microsoft.com, и теперь я могу сделатьэто:
FROM microsoft-docker-mirror.local.domain/dotnet/core/aspnet:3.0-alpine
# more stuff
Это работает. Но у нас есть удаленные работники, которые могут отсутствовать в локальной сети локального офиса и не могут видеть мой локальный зеркальный сервер. То, что я сейчас хочу сделать, это изменить его в зависимости от окружающей среды. Например,
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? Или, в качестве альтернативы, как заставить зеркала реестра работать на вещи, которые не являются докер-хабами?
Спасибо!