我正在尝试为使用多阶段构建的Spring Boot应用程序构建一个arm64 Docker镜像。使用buildx或者qemu在使用jar -xf ../*.jar进行解包时会挂起。其中一个CPU核心使用100%,进程无限运行。同时,buildx可以成功地为我的非Java项目构建arm64镜像。这可能是由于buildx、qemu、jar、我的应用程序或这些任意组合中的某些原因。请分享如何调试此问题的想法?
.Dockerfile
建立镜像的命令:
.Dockerfile
FROM openjdk:8-jdk-alpine as build
WORKDIR /workspace/app
COPY build/libs/*.jar .
RUN mkdir -p unpacked && (cd unpacked; jar -xf ../*.jar) # <-- this is where qemu hangs
# Multi-stage build to split the dependencies and the app code into different layers
FROM openjdk:8-jdk-alpine
...etc ... these stage is not reached at all
建立镜像的命令:
docker buildx build --platform linux/arm64,linux/amd64 -t mytag . --push
标准输出中这行代码会无限地执行:[linux/arm64 build 4/4] RUN mkdir -p unpacked && (cd unpacked; jar -xf ../*.jar)
我看到进程正在运行:
ps aux | grep jar
root 21965 99.9 0.0 201144 12928 ? Ssl 23:10 39:06 /usr/bin/qemu-aarch64 /usr/lib/jvm/java-1.8-openjdk/bin/jar -xf ../myjar-0.0.1-SNAPSHOT.jar
openjdk:8-jdk
镜像吗? - Noam Yizraelislim
版本一起工作。图像大小几乎比完整基础图像小了两倍。谢谢!我想我会选择使用slim
版本而不是alpine
。 - Peter