说明
更新时间:2020/6/4 15:504,更新了部分详细命令
本文记录docker部署springboot项目的相关知识,本文会持续更新,不断地扩充
本文仅为记录学习轨迹,如有侵权,联系删除
除了本文记录的传统的docker部署springboot项目之外,还有一种通过idea的docker插件的一键部署springboot项目,具体可以看本人的另一篇博客菜鸟的IDEA使用Docker插件
一、环境
(1)首先需要安装VMware虚拟机,本人采用VMware虚拟机的方式来进行docker的相关知识的学习
(2)在虚拟机里面安装Ubuntu系统
(3)docker的安装,这个可以参考本人之前docker系列的博文,有菜鸟入门Docker和菜鸟学习docker实例
二、部署
部署方式,个人知道的有两种,一种是自己手动将springboot项目通过maven打包成jar包后,自己手动的将jar上传到服务器,通过手动Dockerfile文件的方式的方式部署;还有一种是用idea的dokcer插件,直接通过idea上传到服务器进行部署。
这里先用第一种方式进行部署,后面会出一期idae插件一键部署的博文,首先确定自己的虚拟机里面已经安装了docker,并且保证已经从镜像仓库里面拉取了java镜像和mysql镜像,在已经安装了Ubuntu系统和dokcer的虚拟机里面输入docker image ls
如果没有安装的话需要先安装一下这两个镜像,docker拉取镜像也挺简单的,一行命令搞定docker pull 要拉取的镜像
,下面以拉取java镜像为例
mysql镜像的拉取也是如此,这里就不再重复,实在不知道怎么拉取的可以查看本人的这篇博文菜鸟学习docker实例
拉取好上面两个镜像后,需要先创建一个mysql容器,mysql容器的创建个人觉得如果加上做数据的挂载的话还是有点小复杂的,不过这些本人之前已经做过了,具体可以查看本人的这篇博文菜鸟学习docker实例,里面有详细的记录如何创建mysql容器和mysql做数据挂载等。
输入命令docker ps -a
,查看目前虚拟机里面正在运行的容器
在虚拟机外面通过navicat连接虚拟机里面的mysql容器,并且将要部署的springboot项目的数据导进去
然后将springboot项目配置文件的数据库连接信息修改一下,让其连接到虚拟机里面的mysql容器
试着启动springboot项目,输入账号密码,可以登录,说明数据库连接成功
将项目用maven打包成一个jar包
创建Dockerfile文件
FROM java
VOLUME /tmp
ADD museum-0.0.1-SNAPSHOT.jar museum.jar
EXPOSE 8088
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/museum.jar"]
FROM java:表示安装的java镜像
VOLUME /tmp:创建/tmp目录并持久化到Docker数据文件夹
ADD museum-0.0.1-SNAPSHOT.jar museum.jar:将生成的jar包复制并重命名到museum.jar
EXPOSE 8088:对外暴露的接口,也是访问的接口,接口的端口号需要根据springboot项目配置的端口号来设置
ENTRYPOINT:固定写法,用来运行jar包,相当于java -jar xxx.jar一样
最后将Dockerfile文件和打包生成的jar包(museum-0.0.1-SNAPSHOT.jar)一起上传到虚拟机里面的Ubuntu系列里面,并且处于同一目录下
进入Dockerfile文件和打包生成的jar包所在的文件夹,并且输入构建镜像的命令docker build -t museum .
注意命令后面还有一个小数点,museum是Dockerfile文件里面ADD museum-0.0.1-SNAPSHOT.jar museum.jar
的museum,镜像即可构建成功,由于当时构建成功后没有截图,这里采用别人的图(图里的exam.jar对应museum.jar)
查看构建好的镜像
运行镜像,输入命令docker run -d --name museum01 -p 8088:8088 museum
关于运行镜像命令在本人的docker系列博文里面有解释,这里就不解释了。跑起来之后就可以在虚拟机外面通过虚拟机里Ubuntu系统的ip来访问了
查看容器有没有跑起来,没有的话需要用docker start 容器id
命令跑起来
确定了容器跑起来之后可以在虚拟机外面通过ip访问
输入docker ps -a
查看生成的镜像有没有在运行
这就是第一种方式docker部署springboot项目
除了本文记录的传统的docker部署springboot项目之外,还有一种通过idea的docker插件的一键部署springboot项目,具体可以看本人的另一篇博客菜鸟的IDEA使用Docker插件