我正在尝试使用 docker compose 运行我的 spring boot 应用程序(使用 MariaDB 和 Redis)。
我使用了
docker compose up -d
命令并检查我所有的容器都在运行。
但是 spring boot 容器向我展示了一些日志,
Error : Unable to access jarfile app.jar
.
Docker文件
FROM eclipse-temurin:17-jdk-alpine
WORKDIR /app
COPY ./build/libs/plantodo-0.0.1-SNAPSHOT.jar app.jar
CMD ["java", "-jar", "app.jar"]
EXPOSE 8080
docker-compose.yml
version: '3'
services:
maria:
image: mariadb:latest
restart: always
volumes:
- plantodo-mariadb-data:/var/lib/mariadb
environment:
MARIADB_ROOT_PASSWORD: pepper27913@
MARIADB_DATABASE: plantodo
ports:
- '3306:3306'
redis:
image: redis:latest
restart: always
container_name: redis
ports:
- '6379:6379'
volumes:
- ./redis/data:/data
- ./redis/conf/redis.conf:/usr/local/conf/redis.conf
labels:
- 'name=redis'
- 'mode=standalone'
command: redis-server /usr/local/conf/redis.conf
app:
build: .
command: java -jar app.jar
image: eclipse-temurin:17-jdk-alpine
restart: always
ports:
- 8080:8080
working_dir: /app
volumes:
- ./:/app
environment:
MARIADB_HOST: mariadb
MARIADB_USER: root
MARIADB_PASSWORD: pepper27913@
MARIADB_DB: plantodo
volumes:
plantodo-mariadb-data:
我尝试在不使用
docker compose up -d
命令的情况下构建 spring boot 容器。
构建成功。我不知道是什么导致了这个问题。
[+] Building 4.4s (8/8) FINISHED
=> [internal] load build definition from Dockerfile 0.1s
=> => transferring dockerfile: 382B 0.0s
=> [internal] load .dockerignore 0.1s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/eclipse-temurin:17-jdk-alpine 0.0s
=> [1/3] FROM docker.io/library/eclipse-temurin:17-jdk-alpine 0.0s
=> [internal] load build context 0.6s
=> => transferring context: 51.46MB 0.6s
=> CACHED [2/3] WORKDIR /app 0.0s
=> [3/3] COPY ./build/libs/plantodo-0.0.1-SNAPSHOT.jar app.jar 3.3s
=> exporting to image 0.4s
=> => exporting layers 0.4s
=> => writing image sha256:2c8d67361f3dac4117b18de5ed28f5c188874bd94cdfeeb37789b578b9c666b0 0.0s
=> => naming to docker.io/plantodo/app 0.0s