一,将项目打包,并准备好自己的配置文件

不知道你有没有自己的项目,我这里码云上有一个springboot集成mybatis及logback的项目可用

码云项目地址:https://gitee.com/fred4j/springboot-demo.git

大概路径如下

docker部署springboot项目挂载 docker springboot日志挂载_jar

docker部署springboot项目挂载 docker springboot日志挂载_jar_02

tips,我的项目名称是demo, 所以上级目录是demo,demo目录下有maven打包好的文件夹

/logs /lib /config 以及 demo.jar (Dockerfile是在第二步建)

我们将打包好的文件放到linux下的目录 /data/project/ 下

二, 建立并编写Dockerfile文件
1, 建立Dockerfile文件(名字固定,不允许修改)

vim Dockerfile

2,编辑Dockerfile文件 (Dockerfile)

#添加JAVA启动的必要镜像
    FROM java:8
    
    #创建一个目录存放jar包
    RUN mkdir -p /opt/demo
    
    #设置开放端口号
    EXPOSE  9090
    
    
    #添加jar包,存放路径以及重命名
    ADD  demo.jar  /opt/demo/demo.jar
    
    
    #添加进入docker容器后的目录
    WORKDIR   /opt/demo
    
    
    #修改文件的创建修改时间
    RUN bash -c 'touch /opt/demo/demo.jar'
    
    #启动容器执行命令。 -Djava.security.egd=file:/dev/./urandom 可以缩短tomcat启动时间
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/opt/demo/demo.jar"]

docker部署springboot项目挂载 docker springboot日志挂载_docker_03

如果是第一次使用java:8 build镜像,则会先下载java:8的镜像,docker images时,会发现多了一个java 8的镜像文件

如果有多环境,可按如下配置
#spring.profiles.active指定启动环境
#-c为清除以前启动的数据
#方法

#ENTRYPOINT [“java”,"-Djava.security.egd=file:/dev/./urandom","-jar","/opt/demo/demo.jar","–spring.profiles.active=${profiles}","-c"]

3, 创建镜像文件(注意,需要进入到项目的目录下)

cd /data/project/demo

– 这里的意思是 build 一个 名称为demo的镜像,注意demo后面有一个空格和 .

docker build -t demo .

4,查看镜像是否创建成功

docker images

docker部署springboot项目挂载 docker springboot日志挂载_docker_04

5, 使用镜像启动容器
docker run -p 9090:9090 -v /data/project/demo/config:/opt/demo/config -v /data/project/demo/lib:/opt/demo/lib -v /data/project/demo/logs:/opt/demo/logs --name=demo-pro -d demo

参数解析
-p : 映射端口, 宿主机端口 : 项目端口
-v : 映射配置文件及目录
-name : 容器名称 demo-pro
-d demo 守护式方式启动镜像 demo

6 ,查看容器是否启动

docker ps

这里踩了一个坑,由于本地mysql和虚拟机账号密码不一致,导致容器起来后立即退出,
可以在/data/project/demo/logs/ 下查看 日志(有日志,证明起来了,只是项目启动报错,可通过日志解决)

7,总结
配置文件可通过修改 /data/project/demo/config 下的文件实现

docker部署springboot项目挂载 docker springboot日志挂载_jar_05

补充一个使用Dockerfile 加载jvm内存参数的demo

#添加JAVA启动的必要镜像
FROM java:8

##项目名称
ENV PRO_NAME="demo"

#添加JVM参数
ENV JAVA_OPTS="-server -Xmx1024M -Xms1024M -Xmn750M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=512M -XX:GCTimeRatio=19 -XX:+ClassUnloading -XX:+UseConcMarkSweepGC -Xloggc:logs/gc.log"

##创建一个目录存放jar包
RUN mkdir -p /opt/${PRO_NAME}
#
##设置开放端口号
EXPOSE  9090
#
#
##添加jar包,存放路径以及重命名
ADD  ${PRO_NAME}.jar  /opt/${PRO_NAME}/${PRO_NAME}.jar
#
##添加进入docker容器后的目录
WORKDIR   /opt/${PRO_NAME}

##修改文件的创建修改时间
RUN bash -c 'touch /opt/${PRO_NAME}/${PRO_NAME}.jar'
#
##启动容器执行命令。 -Djava.security.egd=file:/dev/./urandom 可以缩短tomcat启动时间
#ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/opt/tracker_mq/tracker_mq.jar"]
ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /opt/${PRO_NAME}/${PRO_NAME}.jar

Docker系列暂时到这里结束了,如有心得,可一起交流~