我们有一个在Docker容器中运行的Java Spring Boot应用程序。它基于openjdk:13 jdk alpine。我们将其部署到Linux机器上,但我们也能够在Windows机器上以及基于Intel的iMac上本地运行它。
然而,我们发现它不能在基于ARM的苹果笔记本电脑上正常运行。我们得到的例外是基本的Java错误,比如“找不到符号Java.class[]”,以及其他看起来像JVM关闭的东西。
有没有办法构建一个可以在所有这些平台上运行的Docker映像,包括M1 MacBook Pro?
使用多架构支持构建图像,以消除未来所有可能的架构故障。要干净地做到这一点,请避免在Dockerfile中使用任何与平台相关的内容,只使用老式的Dockerfiles即可。
如果您正在使用github和github操作,您可以选中此选项来构建图像并将其推送到图像存储库中。这也可以用于构建在树莓样SBC上工作的图像。
我让它与以下图像一起工作。我用
docker pull bellsoft/liberica-openjdk-alpine-musl:17
我的Dockerfile
:
FROM bellsoft/liberica-openjdk-alpine-musl:17
ADD build/libs/app-0.0.1-SNAPSHOT-plain.jar app.jar
ENTRYPOINT ["java","-jar","app.jar"]
现在docker build命令起作用了
我的M1 macbook上的Java容器也有很多问题。对于您的问题,您可能需要创建自己的docker图像:
Dockerfile文件
FROM --platform=linux/arm64/v8 ubuntu:20.04
ARG DEBIAN_FRONTEND=noninteractive
EXPOSE 8080
RUN apt update \
&& apt upgrade -y \
&& apt install -y openjdk-13-jre git \
&& apt clean
RUN mkdir -pv /app && cd /app && \
git clone https://github.com/spring-guides/gs-spring-boot.git && \
cd /app/gs-spring-boot/initial && ./gradlew build
WORKDIR /app/gs-spring-boot/initial
ENTRYPOINT [ "./gradlew", "bootRun" ]
生成图像
docker build -t test .
运行容器
docker run --rm -p 8080:8080 test
去http://localhost:8080/在你的浏览器上,你的Spring Boot应用程序在没有Rosetta 2的情况下运行。
免责声明:我不是Java开发人员,我的Dockerfile用于概念验证。
请记住,Docker镜像是基于ARM64架构构建的。如果你想在Intel/AMD处理器上运行这个容器,你必须在Dockerfile上更改--platform=linux/amd64 ubuntu:20.04。
我对Openshift Origin非常陌生。我现在正在尝试在OpenShift origin中部署docker容器的可能性。为此,我创建了一个非常简单的docker容器,它将两个数字相加并产生结果: https://github.com/abrahamjaison01/openshifttest 我在本地创建了一个docker映像,在docker hub中创建了一个公共docker映像: 我在本
问题内容: 我在CI和CD上创建了Jenkinsfile,Dockerfile,Dockerfile.test到CI和CD,在GitHub上构建了我的服务器API,我在Jenkins上构建了该构建,并且构建成功,并且我的docker在Jenkinsfile阶段也在容器上运行,我创建了用于测试和部署在服务器API上,并使用docker作为容器 我也使用docker-compose在docker上运行
我想通过Docker容器在AWS Lamda上运行selenium脚本。 我正在使用AWS EC2构建容器,然后通过AWS Lambda RIE在本地测试容器。一旦测试成功,容器将在ECR注册,以便馈送AWS Lambda。 尽管RIE在EC2上的本地测试总是成功的,但我无法让Lambda正常工作。Lambda测试当前总是失败,并显示以下错误消息: 在这里,您可以找到我实际使用的所有代码: 文档
我有以下Dockerfile: 以及以下docker-compose.yml: 如果我通过docker cmd以以下方式手动运行Dockerfile: 看起来一切正常,我得到了它实际执行的应用程序输出日志: 但是,当我试图通过docker-comment以以下方式执行我的应用程序时: 我的应用程序似乎启动正常,但无法继续执行。以下是输出: 我尝试执行show logs命令: 但我得到的唯一记录是第
拉取官方 Docker 镜像 docker pull apache/shardingsphere-proxy 手动构建 Docker 镜像(可选) git clone https://github.com/apache/shardingsphere mvn clean install cd shardingsphere-distribution/shardingsphere-proxy-dist
我正在学习docker labs官方的多容器应用程序实践教程。在MacBook Pro M1终端上运行以下命令时 我得到下面的错误。 docker:清单列表条目中没有与linux/arm64/v8匹配的清单。