Могу ли я сослаться на Dockerfile в Dockerfile? - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть Dockerfile, который создает образ сборки, который я хочу использовать здесь: ~/build/Dockerfile затем я использую стандартный образ для развертывания

Образ, созданный из ~/build/Dockerfile, нигде не опубликован, я знаю, чтоможно просто скопировать и вставить один Dockerfile в другой, однако было бы лучше, если бы я мог просто сослаться на него так ...

Можно ли как-то ссылаться на сам Dockerfile при развертывании?

примерно так:

FROM [insert something that creates an image using ~/build/Dockerfile] as build-env
... build operations ....

FROM some-image
COPY --from=build-env /built .
ENTRYPOINT [blah]

Это не сработает, но есть ли другой способ сделать это?

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Обычно такие вещи в пространстве Docker, как команда docker run и директива FROM, будут использовать локальный образ, если он существует;это не должно быть передано в хранилище.Это означает, что вы можете создать свой первый образ и сослаться на него в следующем Dockerfile по имени.(Нет другого способа сослаться на другой Dockerfile как таковой .)

Более новые версии Docker имеют расширенную форму команды Dockerfile COPY , которая

принимает флаг --from=<name|index> .... Если этап сборки с указанным именем не может быть найден, вместо него пытаются использовать изображение с тем же именем.

Таким образом, если вы заранее запустите

docker build -t build-env ~/build

, то точный синтаксис, который вы показываете в предложенном Dockerfile, будет работать

FROM some-image
COPY --from=build-env /built .

, и не имеет значения, что промежуточный образ сборки нефактически никуда не толкнул.

0 голосов
/ 04 февраля 2019

Нет, вы не можете сделать это, потому что вы должны предоставить изображение для FROM.

Измените строку COPY на

COPY --from=step1 /built .

и напишите скрипт для создания своего изображения:

cd path1
docker build -t step1 .
cd path2
docker build -t final_image . 

(если вы не хотите использовать жесткий кодstep1 в Dockerfile, замените его на var и вызовите ARG)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...