【发布时间】:2021-07-04 18:59:34
【问题描述】:
我想做什么?
我想转换为运行我的 Spring-Boot 应用程序的容器化,它可以在 amd64 系统上运行,在 Raspberry Pi 4 的 Docker 上。我该如何解决我的问题?
Raspberry Pi 上运行的操作系统是什么?
我已经使用 Raspberry Pi Imager v1.6.1 安装了 Ubuntu Server 20.04.2 LTS for arm64 架构 em> 在 Raspberry Pi 4 上。
我采取了哪些措施来解决问题?(问题仍然存在)
默认版本不适用于我的Raspberry Pi。因此,我在下面尝试了一些方法。
我在我的 openjdk:15-jdk-slim 将“FROM”行从 arm64v8/openjdk:17 更改为 arm64v8/openjdk:17 >dockerfile 如你所见:
FROM arm64v8/openjdk:17
COPY . /projects/red-dir
WORKDIR /projects/red-dir
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} /projects/red-dir/my_red_app.jar
ENTRYPOINT ["java","-jar","/projects/red-dir/my_red_app.jar"]
之后,我使用 Maven 和 Docker 构建并推送了我的应用程序:
$ ./mvnw clean package -Dmaven.test.skip=true && java -jar target/my_red_app.jar
$ docker build -t user/my_red_app:v1.0.0 .
然后,我的应用依赖于 MongoDB,所以我将这个 图像 从 mongo 更改为arm64v8/mongo 在 docker-compose.yml 上,如下所示:
version: "3"
services:
mongodb:
container_name: mongodb
image: arm64v8/mongo
restart: always
ports:
- 27017:27017
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: 12345
networks:
- shared-net
colour_app:
container_name: my_red_app
image: user/my_red_app
restart: always
ports:
- 7070:7070
depends_on:
- mongodb
networks:
- shared-net
networks:
shared-net:
driver: bridge
有用的东西和没用的东西
MongoDB 正在运行。我可以通过 MongoDBCompass 使用,但我的 Spring-Boot 应用程序 不起作用。在docker-compose up 命令中,我遇到了这样的输出:
...
...
colour_app | standard_init_linux.go:219: exec user process caused: exec format error
colour_app | standard_init_linux.go:219: exec user process caused: exec format error
colour_app | standard_init_linux.go:219: exec user process caused: exec format error
colour_app | standard_init_linux.go:219: exec user process caused: exec format error
让我知道我没有抓住哪些东西。感谢您的阅读。
【问题讨论】:
标签: spring-boot docker maven docker-compose raspberry-pi4