Несколько изображений, один Dockerfile
Как создать два изображения в одном Dockerfile, они только копируют разные файлы.
Если это не приведет к созданию двух изображений img1 и img2, вместо этого получатся два безымянных изображения d00a6fc336b3 и a88fbba7eede
Dockerfile:
FROM alpine as img1
COPY file1.txt .
FROM alpine as img2
COPY file2.txt .
Вместо этого это результат сборки Docker.
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> d00a6fc336b3 4 seconds ago 4.15 MB
<none> <none> a88fbba7eede 5 seconds ago 4.15 MB
alpine latest 3fd9065eaf02 3 months ago 4.15 MB
1 ответ
Вы можете использовать docker-compose
файл с использованием target
опция:
version: '3.4'
services:
img1:
build:
context: .
target: img1
img2:
build:
context: .
target: img2
используя ваш Dockerfile
со следующим содержанием:
FROM alpine as img1
COPY file1.txt .
FROM alpine as img2
COPY file2.txt .
Вы можете создать несколько образов из одного файла Docker, запустив docker build
для каждого этапа сборки name
хотите выбрать из Docker file (FROM alpine as name
).
По умолчанию docker строит образ из последней команды в Docker file, однако вы можете настроить таргетинг на промежуточный уровень. Исходя из примера Docker file в вопросе, можно:
docker build -t image1 --target img1 .
ссылка: https://docs.docker.com/engine/reference/commandline/build/