问题
在开发 SpringBoot 微服务的过程中,经常发生的情况是,需要使用 Windows 进行开发,但是微服务最终会部署在 Linux 上,因此而产生的的开发环境和生产环境的不一致,会导致上线后的一些问题
解决办法
通过把源代码目录挂载到 Docker 中,并在 Doker 中,运行 mvn spring-boot:run,因为 Docker 和 Windows 共享相同的目录,所以 Docker 中的 maven 可以检测到代码的改动,自动重启 SpringBoot 服务
- 假设你的 Spring 代码可以使用
mvn spring-boot:run正常运行。为了使 Maven 可以检测到代码的改动以重启服务,请确保pom.xml里添加了依赖项:spring-boot-devtools - 假设的你的代码目录在
C:\Project\springProject中。请把下面命令中的目录自行替换为自己项目的目录 - 新建 Docker 目录,并在目录下新建文件
Dockerfile
FROM maven:3.5.3-jdk-8-alpine
WORKDIR /app
COPY pom.xml .
RUN mvn dependency:go-offline
VOLUME /app/src
CMD ["mvn", "spring-boot:run"]
- 进入 Docker 目录,编译生成 Docker Image
docker build -t app:dev . - 运行 Docker:
docker run -v d:/Project/demo/src:/app/src app:dev