在刚学习springboot的时候就了解到项目可以通过打包为jar或者war的格式放到服务器上通过命令直接运行,让部署的过程变得十分美丽。随着主流的云计算发展,应用平台都支持发布docker镜像,所以将项目直接部署在容器中,并运行镜像的容器变的也十分重要。

有时候分布式项目的发布,时刻要保证他们的环境依赖一致,比如jdk,webserver,appserver,安全设置,数据库等,而且docker的隔离性以及低耗性,使用起来可以更快的部署交付、迁移和扩展
这也是我接下来需要学习的springcolud中的重要内容,简称微服务。

下面我演示一个简单的使用docker部署项目的例子。


首先在本机进入项目目录下,使用命令mvn package对项目进行打包,这里选择的打包方式为jar。

大型项目建议用docker吗 项目部署到docker_jar


打包成功后在项目目录中生成target目录,其中有打包后的jar文件,可以使用java -jar **.jar 运行测试是否能成功运行。

大型项目建议用docker吗 项目部署到docker_springboot_02


在部署之前保证服务器安装了docker,在Centos7.2中可以使用下列的命令进行安装

yum install docker

启动docker并保持开机自启

systemctl start docker 

systemctl enable docker

接下来将jar文件上传到linux服务器上部署,首先在项目jar文件同级目录下创建一个Dockerfile文件,因为Docker是使用Dockerfile文件来编译自己的镜像的。

文件的内容如下:

大型项目建议用docker吗 项目部署到docker_docker_03

文件内容解释:

1、基镜像为JAVA 版本为8
2、作者名字
3、将项目添加到镜像中,并重命名为app.jar
4、运行镜像文件,监听端口为8080
5、启动时运行java -jar app.jar


其中使用Dockerfile文件中的命令有很多,这里简单的介绍下

  • 1 FROM 命令

FROM 指令知名了当前镜像继承的基镜像,编译当前的镜像是会自动下载基镜像。

FROM ubuntu
  • 2 MAINTAINER 指令

MAINTAINER 指令指明了当前镜像的作者

  • 3 RUN指令

RUN指令可以在当前镜像上执行linux命令,并形成一个新的层(编译时动作)

RUN /bin/bash -c "echo helloworld"  或
RUN ["/bin/bash", "-c", "echo hello"]
  • 4 CMD指令

CMD指令指明了启动镜像容器时的默认行为,该指令在Dockerfile中唯一(运行时动作)

CMD echo “this is a test”
  • 5 EXPOSE 指令

EXPOSE知名了镜像运行时的容器必需监听指定的端口

  • 6 ENV指令

ENV指令可以用来设置环境变量

ENV myName=will
  • 7 ADD指令

ADD指令是从当前工作目录复制文件到镜像文件中

ADD text.txt /mydir/
  • 8 ENTRYPOINT 指令

RNTRYPOINT 指令可以让容器像一个可执行程序一样运行,并接受参数执行

RNTRYPOINT  ["/bin/echo"]

docker run -d image_name "this is a test!!"

接下来编译镜像,在上面的目录下执行下面的命令:

docker build -t wisely/dockerdemo .

其中wisely/dockerdemo 为镜像名称,其中wisely为docker镜像的命名习惯,最后的 . 表示Dockerfile在当前路径下。

编译完成后可以看到镜像已经创建成功

大型项目建议用docker吗 项目部署到docker_docker_04

运行镜像使用下面的命令

docker run -d --name demo -p 8080:8080 wisely/dockerdemo

查看当前的容器状态

大型项目建议用docker吗 项目部署到docker_springboot_05


最后通过访问服务器,可以看到项目的成功部署。

大型项目建议用docker吗 项目部署到docker_部署_06


以上就是使用docker部署springboot项目的全部过程。