Docker构建SpringBoot项目镜像并启动
- 本文以阿里云“轻量应用服务器”CentOS 7.3系统为例
首先准备已开发完成待部署的SpringBoot项目。
1. pom.xml 文件中 properties 标签下 添加Docker 镜像名称
<properties>
<java.version>11</java.version> <!-- JDK版本 -->
<docker.image.prefix>springboot</docker.image.prefix> <!-- docker镜像 -->
</properties>
2. pom.xml 文件中 plugin 标签下 添加Docker构建插件
请确保你的SpringBoot项目中,引入了Maven插件(后面会使用到mven 命令)。已有请忽略
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
添加Docker构建插件
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
3. 执行 maven install
4. 创建DockerFile文件写入Docker指令
FROM openjdk:11 # 指定础镜像进行构建镜像
MAINTAINER Jon.Li # 指定维护者信息
VOLUME /tmp # 创建一个挂载点,存放数据库和需要持久化的数据
ADD JonLevel-0.0.1-SNAPSHOT.jar app.jar
# 复制指定的内容到容器中,可以是 Dockerfile 所在目录的一个相对路径 或一个 URL 或一个 tar 文件,复制进容器会自动解压
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
# 配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖,指定多个时最后一个生效
注意:DockerFile 文件不需要后缀名。DockerFile 是 Docker 镜像的构建文件,是由一些列命令和参数构成的脚本。
5. 将 DockerFile 与 打包好的 jar 放入同一文件夹
打包好的 jar 包可在项目的 target 文件下找到。
6. 上传文件到服务器
7. 切换到其目录下,执行命令构建镜像
关于Docker的安装网上教程此起彼伏,这里就不在赘述了。
docker build -t jon-springboot .
// 注意 . 不要丢掉 否则报错 缺少参数: "docker build" requires exactly 1 argument(s).
Docker 构建项目镜像成功
查看镜像
docker images
启动镜像
docker run -p 9999:9999 -d --name springboot jon-springboot
至此项目镜像启动成功。