dockerdockerfile

Multiple images, one Dockerfile


How to create two images in one Dockerfile, they only copy different files.

Shouldn't this produce two images img1 & img2, instead it produces two unnamed images d00a6fc336b3 & a88fbba7eede

Dockerfile:

FROM alpine as img1
COPY file1.txt .

FROM alpine as img2
COPY file2.txt .

Instead this is the result of docker build .

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

Solution

  • You can use a docker-compose file using the target option:

    version: '3.4'
    services:
      img1:
        build:
          context: .
          target: img1
      img2:
        build:
          context: .
          target: img2
    

    using your Dockerfile with the following content:

    FROM alpine as img1
    COPY file1.txt .
    
    FROM alpine as img2
    COPY file2.txt .