springboot项目打包不存在外置配置时
1、打jar包镜像方式。
springboot项目目录下添加Dockerfile文件
注:Dockerfile没有后缀名
Dockerfile中的内容如下:
# 基于哪个镜像,需要用一个已有的镜像做载体来创建,这里使用的java8镜像,如果大家的docker镜像中没有java8,它就会自动去下载
FROM openjdk:8-jdk-alpine
# 将本地文件夹挂载到当前容器,指定/tmp目录并持久化到Docker数据文件夹,因为Spring Boot使用的内嵌Tomcat容器默认使用/tmp作为工作目录
VOLUME /tmp
#maven打包buildArgs指定项目jar包位置名称
ARG JAR_FILE
#把本地目录下target文件夹里打好的jar文件添加到容器里,重命名为server-boot.jar
ADD ${JAR_FILE} server-boot.jar
#设置环境变量。在复杂的使用场景中,我们可能需要使用各种参数启动JVM,这些参数通过ENV命令设置的环境变量传入Java命令
ENV JAVA_OPTS=""
#容器镜像运行的起始点
ENTRYPOINT exec java $JAVA_OPTS -jar /server-boot.jar
pom添加docker插件
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.3.6</version>
<configuration>
<!--打包后得到的镜像的名称-->
<repository>docker/${project.artifactId}</repository>
<!--Dockerfile中引用到的参数-->
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
执行打包程序
mvn package
centos创建文件夹存放准备程序
在centos7 ~ 创建一个文件夹dockerFile里面放置 上面的Dockerfile 和 springBoot 打包的项目spring_boot.jar
在该docker文件下 指令:docker build -t docker_project:v1.0 . 来打镜像包(注意后边有个.)
执行docker build命令,docker就会根据Dockerfile里你定义好的命令进行构建新的镜像。
-t代表要构建的镜像的tag,.代表当前目录,也就是Dockerfile所在的目录,v1.0代表打得镜像包tag版本。然后就可以看到在下载各种依赖的maven、各种jar,构建完毕后,启动项目。
执行docker run -d -p 8090:8080 bpm-server:v1.0 启动运行该镜像 此处讲镜像中端口8080 映射到宿主机的8090端口.
看docker容器日志我常用的两种方法
- 实时倒数500行日志,这个很实用
docker logs -f --tail 500 容器id
- 容器倒数五分钟内的日志
docker logs --since 5m 容器id
- 实时查看日志信息
docker logs -f 容器id
2、整个工程代码拷到centos服务器上打镜像方式
如jar包打镜像方式 修改pom 和添加Dockerfile文件,将整个项目放centos目录下。执行mvn package命令先打包
[root@iz2zeh5mjwg5u2vl2fawchz ~]# ls /usr/local/gs-spring-boot-docker-master
pom.xml src target
再在/usr/local/gs-spring-boot-docker-master目录下运行命令mvn package docker:build
执行docker images查看打包好的镜像是否成功。
springboot项目打包存在外置配置时
当springboot项目打包下来启动需要读取外置配置文件 外置的jar包时 可以将打包后的整个文件夹创建成docker镜像,方式和打jar包镜像类似 ,换jar为项目打包后生成所需文件夹。
修改Dockerfile文件:
# 基于哪个镜像,需要用一个已有的镜像做载体来创建,这里使用的java8镜像,如果大家的docker镜像中没有java8,它就会自动去下载
FROM openjdk:8-jdk-alpine
# 将本地文件夹挂载到当前容器,指定/tmp目录并持久化到Docker数据文件夹,因为Spring Boot使用的内嵌Tomcat容器默认使用/tmp作为工作目录
VOLUME /tmp
#把本地目录下target文件夹里打好的jar文件添加到容器里,重命名为server-boot.jar
ADD server-boot-8.0.0-SNAPSHOT server-boot-8.0.0-SNAPSHOT
#设置环境变量。在复杂的使用场景中,我们可能需要使用各种参数启动JVM,这些参数通过ENV命令设置的环境变量传入Java命令
ENV JAVA_OPTS=""
#容器镜像运行的起始点(有自己的启动脚本可以直接执行)
ENTRYPOINT exec ./server-boot-8.0.0-SNAPSHOT/bin/startup.sh
注意此时自己打包生成的执行脚本需要赋有权限。
进行jar包打镜像步骤 将此文件夹打成镜像 后启动,实则执行的是启动脚本startup.sh