Heycm

Heycm

SpringBoot项目部署到Docker

2020-07-13

本文记录如何将SpringBoot项目部署到Docker。

一、前提

1、默认读者了解docker基本命令

二、部署过程

1、将项目jar包,jdk准备好,上传到服务器,我用的Xftp上传。

2、然后新建一个文件就叫“Dockerfile”,因为后续构建Docker镜像时不指定路径和名称它默认就找叫这个名字的,当然一般大家都命名成这样的。

![1.png]/upload/2021/06/1-e9d712798cbc491aa3b684adfffb0f66.png)

3、编写Dockerfile

(本人Docker初学者,dockerfile写的不好,还请各位大哥留情哇)

# 继承镜像
FROM centos

# 作者
MAINTAINER heycm<heycm@qq.com>

# 构建镜像时顺带安装vim,这个看需求,可以不要
RUN yum -y install vim

# 定义一个环境变量
ENV MY_PATH /usr/local

# 设置进入容器落脚点
WORKDIR $MY_PATH

# 将jdk拷贝到/usr/local目录下,并且解压
ADD jdk-8u251-linux-x64.tar.gz $MY_PATH/

# 将项目jar包拷贝到/usr/local目录下
COPY crim.jar $MY_PATH/

# 配置Java环境变量
ENV JAVA_HOME $MY_PATH/jdk1.8.0_251
ENV PATH $JAVA_HOME/bin:$PATH
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

# 暴露端口(项目用的端口)
EXPOSE 8080

# 启动容器时跑项目
ENTRYPOINT ["nohup", "java", "-jar", "crim.jar", "&"]

4、构建镜像

就在当前目录下构建,注意后边有一个点,表示当前目录

# -t:表示版本,tag,给镜像起个名称和版本号,如boot-crim-api:1.0
#     不写版本默认就是latest

docker build -t boot-crim-api .

-t:表示版本,tag,给镜像起个名称和版本号,如boot-crim-api:1.0,不写版本默认就是latest

2.png

执行,等待构建

5、启动容器

构建完成,可以查看镜像了

3.png

启动容器

# -d:表示后台运行
# -p:端口映射,宿主机Port:容器Port
# --name:指定容器名称,不指定docker自己给一个随机名

docker run -d -p 8888:8080 --name crim-api boot-crim-api

到此,SpringBoot项目部署到Docker就完成了。

拓展:

如果有数据卷需求的,也可以使用 -v 指令指定数据卷:

docker run -d -p 8888:8080 -v 宿主机文件夹绝对路径:容器文件夹绝对路径 --name crim-api boot-crim-api 

路径一定要是绝对路径,不建议直接映射文件,会出各种毛病(映射不上、不能同步等等)。

数据卷可以用来备份数据、日志、各种文件、共享数据等等,功能强大,是docker的重要部分之一;还可以做一个父容器来当做数据卷容器,其他容器继承父容器,这样就可以做到多个容器之间的数据共享。

6、其他补充

项目中连接数据库之类的,如果数据库同在一个服务器,跟部署在宿主机一样用的 内网IP:端口 连接。