首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当使用多阶段Java构建为arm64构建镜像时,Docker buildx挂起

当使用多阶段Java构建为arm64构建镜像时,Docker buildx挂起
EN

Stack Overflow用户
提问于 2021-09-10 07:29:21
回答 1查看 360关注 0票数 1

我正在尝试为一个使用多阶段构建的Spring Boot应用程序构建一个arm64 Docker镜像。buildx,或者更确切地说,qemu在使用jar -xf ../*.jar的解包步骤中挂起。其中一个CPU核心使用100%,该进程无限运行。同时,buildx可以成功地为我的非arm64项目构建Java镜像。这可能是由于buildx、qemu、jar、我的应用程序中的某些内容,或者它们的任意组合造成的。请分享一下如何调试这个的想法?

.Dockerfile

代码语言:javascript
运行
复制
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

在标准输出中,这一行被无限地执行:

代码语言:javascript
运行
复制
[linux/arm64 build 4/4] RUN mkdir -p unpacked && (cd unpacked; jar -xf ../*.jar)

我看到进程正在运行:

代码语言:javascript
运行
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-10 18:56:08

很难说,但这可能是alpine版本化docker图像可能存在的许多问题之一,here's报告了一个类似的问题,所以它可能是相同的。

目前,推荐的解决方案是使用瘦版本的debian版本(openjdk:8-jdk-slim),如果它的大小很笨重的话。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69128702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档