В настоящее время я нахожусь на пути к развертыванию приложения java с Docker и K8s. Поскольку я использую кластер 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 .
работает, но приводит к двум безымянным, без тегов изображениям. Я пытался множество вещей, таких как жесткое кодирование пути к докер-файлу и тому подобное. Несмотря на усилия, я получаю довольно неопределенную ошибку:
ERROR: failed to reach build target project:x86_64
Любая идея приветствуется.
Редактировать: Я взял идею от здесь