用于本地 Spring Boot 开发的 Docker-Compose

Dam*_*ien 0 java spring docker spring-boot docker-compose

我有以下 docker-compose 文件设置以及关联的 Dockerfile。

docker-compose.yml

version: '3'
services:
   vault:   
   springboot-app:
    build:
      dockerfile: ./Dockerfile
    restart: always
    ports:
      - "8080:8080"
    environment:
       - "SPRING_PROFILES_ACTIVE=local"
Run Code Online (Sandbox Code Playgroud)

文件

FROM maven:3.5.2-jdk-8-alpine AS MAVEN_BUILD

COPY pom.xml /build/
COPY src /build/src/

WORKDIR /build/

RUN mvn -B -U -e clean verify 

FROM openjdk:8-jre-alpine

WORKDIR /

COPY --from=MAVEN_BUILD /build/target/MyApp-0.0.1-SNAPSHOT.jar /

ENTRYPOINT ["java", "-jar", "MyApp-0.0.1-SNAPSHOT.jar"]
Run Code Online (Sandbox Code Playgroud)

当我运行 docker-compose up 时,我的应用程序现在运行良好。我想知道我需要做哪些更改才能在代码更改时重建 Spring Boot 应用程序?在我的 pom 文件中,我有 spring-boot-maven-plugin 设置如下,我已经指定了 spring-boot-devtools 依赖项

       <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <excludeDevtools>false</excludeDevtools>
            </configuration>
        </plugin>
Run Code Online (Sandbox Code Playgroud)

非常感谢任何帮助

谢谢达米安

Kim*_*m T 5

对于生产应用程序,您可以将 Java Docker 映像与已编译的 .jar 文件一起使用。

对于本地开发,请改用Maven Docker 映像。只要您对应用程序进行更改,它就可以运行源代码并进行编译。您可以使用 docker-compose.yml 文件,例如:

version: '3.1'
services:
  backend:
    image: maven:3.6.3-jdk-8
    command: mvn spring-boot:run
    ports:
      - 8080:8080
    volumes:
      - .:/usr/src/mymaven:rw
    working_dir: /usr/src/mymaven
Run Code Online (Sandbox Code Playgroud)

请务必设置卷以将您的源代码映射到 Docker 容器,并设置 Maven 的工作目录以查找您的 pom.xml。