1 介绍
本文通过编写Dockerfile文件对Spring Boot项目进行编译成镜像然后运行。 正常来说我们只打包单纯的一个以java镜像为基础的镜像,一般不会集成数据库之类的在一个镜像,毕竟全都打包在一起部署单个项目是方便了,但是缺少灵活性。
Dockerfile相关中文文档:点击跳转
2 教程
2.1 打包Spring boot项目
将Spring Boot项目编译成jar包。
通过如下命令打包:
mvn clean package
也可通过idea的界面:
2.2 编写Dockerfile
编写文件,具体意思看注释:
#使用基础镜像java8 这里我使用的是网易的镜像
FROM hub.c.163.com/library/java:8-jre
#作者信息
MAINTAINER benzhu XX@XXX.com
#时区设置
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone && dpkg-reconfigure -f noninteractive tzdata
# 声明需要暴露的端口
EXPOSE 8080
#指定临时目录/tmp Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录
VOLUME /tmp
#可选项 有日志才需要用到 如果有日志的话日志目录设定为/log/log
VOLUME /log
#将jar包添加到容器并更名为app.jar
COPY XXXXX.jar app.jar
# 更新jar包时间属性
RUN bash -c 'touch /app.jar'
# 运行jar包
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
2.3 编译镜像
需要提前安装好Docker并启动:Docker安装教程
请确保jar文件和Dockerfile文件在同一目录,在当前目录打开cmd,执行命令对镜像进行编译: docker build -t 镜像名称:tag版本 .
出现如下表示编译成功: 查看全部镜像命令:
docker images
2.4 执行镜像
docker run -d -p 8090:8080 --name:容器名称 镜像名:镜像tag
查看运行中的镜像: docker ps
2.5 查看日志
查看Spring boot的日志需要进入容器目录: docker exec -it 容器id /bin/bash
然后根据自己定义的日志文件。
复制日志文件到本地(windows系统): docker cp 容器ID:/XXX C:\XXXX
查看容器日志: docker logs -f -t --tail 行数默认全部 容器ID
3 动态参数
很多时候我们的项目像数据库配置是可以启动的时候再传入。
3.1 Spring Boot配置文件
定义${定义名称:预设值} 案例:
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url = jdbc:mysql://${mysql.host:127.0.0.1}:${mysql.port:3306}/${mysql.dbname:yblaas_open}?useAffectedRows=true&useSSL=false&serverTimezone=GMT%2B8&characterEncoding=utf8
spring.datasource.username = ${mysql.username:root}
spring.datasource.password = ${mysql.password:123456}
spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver
3.2 jar启动的时候传参
java -jar --mysql.host=192.168.2.108 --mysql.port=3306 --mysql.dbname=yblaas --mysql.username=root --mysql.password=123456 XXXX.jar
3.3 Docker命令启动镜像
一定要注意-e要在其他-p、-d指令之前。 docker run -e mysql.host=192.168.2.108 -e mysql.port=3306 -e mysql.dbname=yblaas -e mysql.username=root -e mysql.password=123456 -d -p 8090:8080 镜像名称:镜像tag
评论