一,将项目打包,并准备好自己的配置文件
不知道你有没有自己的项目,我这里码云上有一个springboot集成mybatis及logback的项目可用
码云项目地址:https://gitee.com/fred4j/springboot-demo.git
大概路径如下
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"]
如果是第一次使用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
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 下的文件实现
补充一个使用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系列暂时到这里结束了,如有心得,可一起交流~