如何在一个Dockerfile中创建两个图像,它们只复制不同的文件.
这不应该产生两个图像img1&img2,而是产生两个未命名的图像d00a6fc336b3&a88fbba7eede
Dockerfile:
FROM alpine as img1
COPY file1.txt .
FROM alpine as img2
COPY file2.txt .
Run Code Online (Sandbox Code Playgroud)
相反,这是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
Run Code Online (Sandbox Code Playgroud)
Seb*_*sch 11
您可以使用docker-compose以下target选项使用文件:
version: '3.4'
services:
img1:
build:
context: .
target: img1
img2:
build:
context: .
target: img2
Run Code Online (Sandbox Code Playgroud)
使用您Dockerfile的以下内容:
FROM alpine as img1
COPY file1.txt .
FROM alpine as img2
COPY file2.txt .
Run Code Online (Sandbox Code Playgroud)
小智 7
您可以从一个 Docker 文件构建多个映像,方法是针对要从 Dockerfile ( ) 中挑选的docker build每个构建阶段运行。nameFROM alpine as name
默认情况下,docker 从 Dockerfile 中的最后一个命令构建映像,但是您可以将构建定位到中间层。从问题中的示例 Dockerfile 扩展,可以:
docker build -t image1 --target img1 .
Run Code Online (Sandbox Code Playgroud)
参考:https : //docs.docker.com/engine/reference/commandline/build/#specifying-target-build-stage---target
| 归档时间: |
|
| 查看次数: |
4365 次 |
| 最近记录: |