【发布时间】:2020-04-03 17:43:48
【问题描述】:
我目前正在使用 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 .works,但会生成两个未命名、未标记的图像。m 我尝试了很多方法,例如硬编码 dockerfile 的路径等。尽管付出了很多努力,但我还是遇到了一个非常未定义的错误:
ERROR: failed to reach build target project:x86_64
任何想法都值得赞赏。
编辑:我的想法来自here
【问题讨论】:
标签: docker build docker-compose multiarch