在刚学习springboot的时候就了解到项目可以通过打包为jar或者war的格式放到服务器上通过命令直接运行,让部署的过程变得十分美丽。随着主流的云计算发展,应用平台都支持发布docker镜像,所以将项目直接部署在容器中,并运行镜像的容器变的也十分重要。
有时候分布式项目的发布,时刻要保证他们的环境依赖一致,比如jdk,webserver,appserver,安全设置,数据库等,而且docker的隔离性以及低耗性,使用起来可以更快的部署交付、迁移和扩展
这也是我接下来需要学习的springcolud中的重要内容,简称微服务。
下面我演示一个简单的使用docker部署项目的例子。
首先在本机进入项目目录下,使用命令mvn package
对项目进行打包,这里选择的打包方式为jar。
打包成功后在项目目录中生成target目录,其中有打包后的jar文件,可以使用java -jar **.jar
运行测试是否能成功运行。
在部署之前保证服务器安装了docker,在Centos7.2中可以使用下列的命令进行安装
yum install docker
启动docker并保持开机自启
systemctl start docker
systemctl enable docker
接下来将jar文件上传到linux服务器上部署,首先在项目jar文件同级目录下创建一个Dockerfile文件,因为Docker是使用Dockerfile文件来编译自己的镜像的。
文件的内容如下:
文件内容解释:
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 run -d --name demo -p 8080:8080 wisely/dockerdemo
查看当前的容器状态
最后通过访问服务器,可以看到项目的成功部署。
以上就是使用docker部署springboot项目的全部过程。