部署Springboot单体项目

  1. 安装docker
  2. 安装nginx
  3. 编写Dockerfile文件
  4. 创建镜像创建容器完成部署

参考博文:https://blog.csdn.net/Howinfun/article/details/102514099
视频讲解链接: 【云服务器部署springboot+vue前后端分离项目】 https://www.bilibili.com/video/BV1hY411d7H1/?share_source=copy_web&vd_source=ca4e02b93a63f6b61653cafdecdfc29f

使用maven打包工具

引入依赖–在有启动类的Pom文件中引入

1
2
3
4
5
6
7
8
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

image

安装docker

参照我之前的笔记,安装docker 并且替换docker的镜像源

安装nginx

1
nginx使用来进行反向代理服务主机

在本地安装nginx

安装之前:需要有gcc和gcc++的依赖

1
2
3
4
5
yum -y install gcc
yum -y install gcc-c++
检查安装后版本
gcc -v
g++ -v

需要安装的安装包:注意:需要按照以下顺序安装并进行编译

  1. pcre-8.37.tar.gz
  2. openssl-1.0.1t.tar.gz
  3. zlib-1.2.8.tar.gz
  4. nginx-1.12.2.tar.gz

安装prce

解压缩pcre-xx.tar.gz包

进入解压缩目录,执行./configure

注意:如果提示错误,需要提前安装gcc++

./configure完成后,回到pcre目录下执行make,再执行make install

安装openssl

解压缩openssl-xx.tar.gz包

进入解压缩目录,执行./config

make && make install

安装zlib

解压缩zlib-xx.tar.gz包

进入解压缩目录,执行./configure

make && make install

安装nginx

解压缩nginx-xx.tar.gz包

进入解压缩目录,执行./configure

make && make install

开放服务器端口

1
2
3
如果是本地虚拟机,就关闭防火墙: systemctl stop firewalld / 关闭开机自启动 systemctl disabled firewalld

如果是云主机,需要开放安全组端口80给nginx使用

nginx使用命令

(1)启动命令

在/usr/local/nginx/sbin目录下执行 ./nginx

(2)关闭命令

在/usr/local/nginx/sbin目录下执行 ./nginx -s stop

(3)重新加载命令

在/usr/local/nginx/sbin目录下执行 ./nginx -s reload

(4)查看版本
image
(5)查看进程

1
ps -ef | grep nginx

修改配置文件 – 测试

进入/usr/local/nginx/conf,修改nginx.conf文件:
image

启动测试:

直接访问主机名就可以看到welcome nginx

配置nginx

因为nginx配置文件在我们的/usr/local/nginx/conf/nginx.conf位置,当如果我们的云服务器部署了多个项目的时候,项目配置文件如果都同时写在一个文件中很容易造成路由冲突,所以我们在原有的配置文件下末尾添加一条指令:

1
include /usr/local/nginx/conf.d/*.conf;

在nginx目录创建conf.d目录:

1
mkdir conf.d

在这个文件夹中再创建以conf为后缀的文件,用来配置找到我们的项目的location块:

后端:
image
前端:
image

上传jar包

在/usr/local创建了xz_platform的文件夹

把service-1.0-SNAPSHOT.jar上传到该文件夹

编写Dockerfile

1
2
3
4
5
6
7
8
9
10
# 基于java镜像创建新镜像
FROM java:8
# 作者
MAINTAINER mgx
# 配置映射
VULOME /root
# 将jar包添加到容器中并更名为app.jar
ADD service.jar /root/app.jar
# 运行jar包
ENTRYPOINT ["nohup","java","-jar","/root/app.jar","&"]

把dockerfile文件编译成镜像文件

注意此时执行下列命令的位置是在Dockerfile所处的文件夹中,所以.表示当前文件夹

1
docker build -t xz_service .

执行之后,docker会自动下载java8镜像文件

1
docker images;

image
创建容器做好端口映射即可

1
docker run -d --name=xz-service -p 8080:8080 xz_service

image

配置hosts文件完成本地域名解析映射

C:\Windows\System32\drivers\etc\hosts

api是后端访问域名

admin.xz.com是后台访问
image

测试访问:

admin.api.xz.com/xz/giftInfo/admin/getCheckParam
image

补充说明:

参考博文:https://www.cnblogs.com/Json1208/p/8975403.html

Dockerfile中的VOLUME的使用对部署的帮助:
VOLUME其实和我们的-v指定映射位置差不多,只是VOLUME在宿主机的位置只能是在/var/lib/docker/volumes/目录下

我们可以通过docker inspect + 容器名称查看存在宿主机的哪个目录

所以当我们进行更新jar包的时候可以直接把jar包更名成app.jar上传到该目录

最后通过重启一下容器,它会自动帮助我们把新更新的app.jar更新到我们指定的/root目录中,再次跑起来其实就是我们的新jar包了

1
docker restart xz_service_container