Docker部署Spring Boot项目
本文最后更新于 1288 天前,其中的信息可能已经有所发展或是发生改变。

介绍

本文通过编写Dockerfile文件对Spring Boot项目进行编译成镜像然后运行。
正常来说我们只打包单纯的一个以java镜像为基础的镜像,一般不会集成数据库之类的在一个镜像,毕竟全都打包在一起部署单个项目是方便了,但是缺少灵活性。
Dockerfile相关中文文档:点击跳转

教程

1.打包Spring boot项目

将Spring Boot项目编译成jar包。
通过如下命令打包:
mvn clean package
也可通过idea的界面:

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"]

3.编译镜像

需要提前安装好Docker并启动。Docker安装教程
请确保jar文件和Dockerfile文件在同一目录,在当前目录打开cmd,执行命令对镜像进行编译:
docker build -t 镜像名称:tag版本 .
出现如下表示编译成功:


查看全部镜像命令:
docker images

4.执行镜像

docker run -d -p 8090:8080 --name:容器名称 镜像名:镜像tag

指令 解释
-d 后台运行,前台不输出内容。
-p XXX:XXX 宿主机端口与镜像端口进行绑定,第一个为宿主机端口,第二个为镜像端口。
–name 指定容器名称(不填会随机生成一个)

查看运行中的镜像:
docker ps

5.查看日志

查看Spring boot的日志需要进入容器目录:
docker exec -it 容器id /bin/bash
然后根据自己定义的日志文件。
复制日志文件到本地(windows系统):
docker cp 容器ID:/XXX C:\XXXX

查看容器日志:
docker logs -f -t --tail 行数默认全部 容器ID

动态参数

很多时候我们的项目像数据库配置是可以启动的时候再传入。

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

jar启动的时候传参

java -jar --mysql.host=192.168.2.108 --mysql.port=3306 --mysql.dbname=yblaas --mysql.username=root --mysql.password=123456 XXXX.jar

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

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇