CentOS7前后端分离项目部署过程Docker+Nginx+Spring Boot+Vue

部署方案

部署方案要达到的效果:前端不用管后端,后端不用管前端,各自往服务器上分别部署即可

部署环境

CentOS7.6+Dcoekr+Nginx+SpringBoot+Vue

此次部署所用工具及文件

数据库管理工具—Navicat
Linux终端仿真程序—SecureCRT
FTP客户端—FileZilla
前端包—文件夹dist
后端包—jar包springboottest-0.0.1-SNAPSHOT.jar

注意项目中路径问题

后端连接数据库url将localhost改成主机名
前端将数据获取的localhost改成主机名

基本系统环境搭建

Docker安装

保证yum包为最新

yum update

安装docker

yum install docker

配置阿里云镜像加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://ahu17w8b.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docke

拉取所需镜像

分别拉去mysql nginx 和用来编译jar包的java:8u111

docker pull mysql
docker pull nginx
docker pull java:8u111

移动前端包和后端包

通过filezilla直接拖动到 /root/test/ 目录下,test是我创建了测试项目目录

MySQL操作

启动mysql容器(MYSQL_ROOT_PASSWORD=数据库密码)

docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

用Navicat连接服务器并导入本地上的数据库数据

数据库连接数据库连接
数据传输

Nginx操作

首先我们编写一下nginx.conf用来挂载,配置文件内容需要根据不同的需求适应性更改,我这上面走了不少弯路,废了不少时间(┬_┬)

 vim /data/nginx/conf/nginx.conf
#user nobody;
worker_processes 1;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;


events {
worker_connections 1024;
}


http {
include mime.types;
default_type application/octet-stream;

#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';

#access_log logs/access.log main;

sendfile on;
#tcp_nopush on;
proxy_connect_timeout 5;
proxy_read_timeout 60;
proxy_send_timeout 60;
proxy_buffer_size 32k;
proxy_buffers 4 128k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
client_max_body_size 128m;
ignore_invalid_headers on;


#keepalive_timeout 0;

 


keepalive_timeout 65;

#gzip on;

upstream javabody.org {
server 47.105.34.128:8181;

}

server {
    # 需要被监听的端口号,前提是此端口号没有被占用,否则在重启 Nginx 时会报错
    listen      80 ;
    # 服务名称
    server_name  localhost;

    # 上述端口指向的根目录
    root /usr/share/nginx/html;
    # 项目根目录中指向项目首页
    index index.html;

    client_max_body_size 20m; 
    client_body_buffer_size 128k;

    # 根请求会指向的页面
    location / {
      # 此处的 @router 实际上是引用下面的转发,否则在 Vue 路由刷新时可能会抛出 404
      try_files $uri $uri/ @router;
      # 请求指向的首页
      index index.html;
    }

    # 由于路由的资源不一定是真实的路径,无法找到具体文件
    # 所以需要将请求重写到 index.html 中,然后交给真正的 Vue 路由处理请求资源
    location @router {
      rewrite ^.*$ /index.html last;
    }


}


启动Nginx

docker run --name nginx -d -p 80:80  -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf  -v /data/nginx/logs:/var/log/nginx -v /root/test/dist:/usr/share/nginx/html nginx

运行后端jar包

一条命令即可

docker run -d -p 8181:8181 -v /root/test/springboottest-0.0.1-SNAPSHOT.jar:/root/test/springboottest-0.0.1-SNAPSHOT.jar --name library java:8u111 java -jar /root/test/springboottest-0.0.1-SNAPSHOT.jar

后端只需要更改jar包重启容器即可实现后端更新

运行前端dist包

首先在dist同级目录中创建Dockerfile
内容为

FROM nginx:latest
MAINTAINER zhipeng9802@163.com
COPY dist/ /usr/share/nginx/html

然后在该目录中运行如下命令构建镜像,dicker-vue为镜像名,注意 ‘.’ 这个点不能少

docker build -t docker-vue .

创建该前端容器

docker run -d --name vue -p 80:80 docker-vue

前端只需要更改dist包后重启nginx容器即可实现前端更新,用dist镜像的话需要重新创建新dist包的镜像并运行

至此前后端分离服务器环境全部搭建完毕

感谢网络中很多前辈的知识奉献

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鹏晓星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值