项目结构:
├─simple-example 根目录
├─common 工具类包配置如fastjson,mybatisplus,swagger的配置,自定义异常类,公共工具类
└─service
└─service-stall 主服务
(1) 打包
- spring-boot-maven-plugin要写到根目录的pom文件中
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<mainClass>主类地址</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
- 在common的配置文件中配置如下:取得仅供依赖的jar,要不然可直接执行的jar就太大了
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<classifier>exec</classifier>
</configuration>
</plugin>
</plugins>
</build>
(2)部署: 使用dockerfile-maven-plugin插件来自动化部署项目
- 在service-stall 主服务 的pom文件中使用插件
注意: 使用此插件需要配置环境变量,系统需要重启
变量名: DOCKER_HOST
变量值: tcp://ip:端口
<build>
<plugins>
<!--maven-docker打包部署工具-->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.13</version>
<configuration>
<repository>随便写个/随便写个</repository>
<tag>${project.version}</tag>
</configuration>
</plugin>
</plugins>
</build>
- 编写Dockerfile
要注意,该文件需要放到 (使用dockerfile-maven-plugin的模块中)即: service-stall 主服务
# 指定基础镜像
FROM openjdk:8-jre
# 可以不写
MAINTAINER 个人名称 <个人邮箱>
# 指定挂载点
VOLUME /tmp
# 复制文件到容器
COPY target/打包出来的名字.jar /app/app.jar
# 配置容器启动后的命令
#ENTRYPOINT ["java", "-jar", "/app/app.jar"]
ENTRYPOINT java -jar /app/app.jar
# 对外暴露的接口
EXPOSE 8080
-
在部署前测试自己打包出来的jar包
尤其注意自己的application.yml之类的配置文件在不在jar里 -
运行插件的build,运行成功后,查看idea中docker的本地镜像
点击创建镜像,可以配置名称,端口映射; 可以查看日志,根据日志判断运行情况
-
如果使用docker的mysql镜像,在配置数据库的url时可以使用如下配置,这个方式对不想花时间的人挺方便的
url: jdbc:mysql://服务器的ip地址:对外的端口/数据库名?serverTimezone=GMT%2B8
结束