Spring 代码更改时Docker未重新启动
如本文所述,如果我将源代码装入该docker的Spring 代码更改时Docker未重新启动,spring,docker,docker-compose,restart,Spring,Docker,Docker Compose,Restart,如本文所述,如果我将源代码装入该docker的卷中的文件夹,我会立即看到我所做的更改 但是,这是我的docker compose: version: '3' services: database: ... engine: build: ./name restart: always volumes: - .:/name-code - ./name/config-e
卷
中的文件夹,我会立即看到我所做的更改
但是,这是我的docker compose
:
version: '3'
services:
database:
...
engine:
build: ./name
restart: always
volumes:
- .:/name-code
- ./name/config-examples:/config
ports:
- 8080:8080
depends_on:
- database
environment:
- TZ=Europe/Rome
...
grafana:
...
如您所见,我正在安装:/name code
。。。所以,只要我更改这个目录中的代码,我就会看到docker用新的JAR重新启动(我正在开发一个Spring引导应用程序)。。。然而,这并没有发生,事实上,我的本地jar如下所示:
-rw-r--r-- 1 user staff 43171359 Jun 1 12:35 project.jar
但docker中的jar如下所示:
-rw-r--r-- 1 root root 43171269 May 31 19:52 app.jar
FROM adoptopenjdk/openjdk11:jdk-11.0.11_9-alpine-slim
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
COPY config-examples /app/config
CMD ["java","-jar","/app.jar"]
(刚刚被重命名),但正如您所看到的,上一次更新非常不同,实际上更新没有被导入
日志:
我再次阅读了您的帖子,误解在于
:name code
是一个卷装入点,它不是docker compose构建的docker映像的一部分,因此更改其内容不会强制docker重建映像。否则,新内容将可从容器访问
因此,您可以看到,CACHED[2/3]COPY target/*.jar app.jar
是从缓存层检索的
在我看来,解决方案是编写一个自定义Dockerfile,它显式地添加jar
,如下所示。因此,每次jar发生更改时,图像都会按照预期进行重建
问候。你能发布你的docker构建日志吗?@Antoniopetrica只是
docker compose开始
或者你想要docker compose开始
?docker composebuild@AntonioPetricca请重试添加--verbose
,以获取有关docker build
的详细信息。您好,感谢您抽出时间。。。。我已经有一个Dockerfile导入jar(这就是为什么我有引擎:build:./name
应该触发该文件夹中的Dockerfile,它将导入jar(几分钟前就这个问题发布了))
FROM adoptopenjdk/openjdk11:jdk-11.0.11_9-alpine-slim
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
COPY config-examples /app/config
CMD ["java","-jar","/app.jar"]