gpt4 book ai didi

docker - 使用 docker-compose 构建两个不同标记的 docker 镜像

转载 作者:行者123 更新时间:2023-12-05 02:08:23 25 4
gpt4 key购买 nike

我目前正在使用 Docker 和 K8s 部署 Java 应用程序。因为我使用的是 Raspberry Pi Kubernetes 集群,所以我想生成两张图片,一张用于 x86 平台,一张用于 arm32v7(用于在 Raspberry 集群上进行测试)。目标是使用一个 Dockerfile 生成两个不同标记的 docker 镜像,并将生成的镜像推送到 Docker Hub。我使用以下 Dockerfile:

FROM openjdk:8-alpine as x86

RUN mkdir -p /usr/src/app
COPY project/generated/distributions/executable/launch.jar /usr/src/app
WORKDIR /usr/src/app
CMD java -jar launch.jar


FROM arm32v7/adoptopenjdk:8-jre-hotspot-bionic as arm32

RUN mkdir -p /usr/src/app
COPY project/generated/distributions/executable/launch.jar /usr/src/app
WORKDIR /usr/src/app
CMD java -jar launch.jar

我的 docker-compose.yml 看起来像这样:

version: '3.7'
services:
x86:
build:
context: .
dockerfile: Dockerfile
target: project:x86_64
arm32:
build:
context: .
dockerfile: Dockerfile
target: project:arm32

使用 docker build . 有效,但会产生两个未命名、未标记的图像。我已经尝试了很多事情,比如对 Dockerfile 的路径进行硬编码等等。尽管我付出了努力,但还是出现以下错误:

ERROR: failed to reach build target project:x86_64

任何想法都会受到赞赏。

编辑:我的想法来自 here

最佳答案

对于任何想知道的人,我在一点帮助下弄明白了。

docker-compose.yml 构建部分中的目标定义不是定义目标图像。它定义了目标阶段。要指定图像,请将图像部分添加到多个阶段。 Dockerfile 中的命令之间也没有空行,解释器将在空行后停止。这是更正后的工作代码:

docker 文件:

FROM openjdk:8-alpine as x86
RUN mkdir -p /usr/src/app
COPY project/generated/distributions/executable/launch.jar /usr/src/app
WORKDIR /usr/src/app
CMD java -jar launch.jar


FROM arm32v7/adoptopenjdk:8-jre-hotspot-bionic as arm32
RUN mkdir -p /usr/src/app
COPY project/generated/distributions/executable/launch.jar /usr/src/app
WORKDIR /usr/src/app
CMD java -jar launch.jar

和 docker-compose.yml:

version: '3.7'
services:
x86:
build:
context: .
dockerfile: Dockerfile
target: x86
image: foo.bar.example:x86_64
arm32:
build:
context: .
dockerfile: Dockerfile
target: arm32
image: foo.bar.example:arm32

关于docker - 使用 docker-compose 构建两个不同标记的 docker 镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61017559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com