首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

若依前后端分离项目部署(使用docker)

  • 25-03-04 06:01
  • 2093
  • 6194
blog.csdn.net

文章目录

  • 一、搭建后端
    • 1.1 搭建流程:
    • 1.2 后端零件:
      • 1.2.1 mysql容器创建:
      • 1.2.2 redis容器创建:
      • 1.2.3 Dockerfile内容:
      • 1.2.4 构建项目镜像:
      • 1.2.5 创建后端容器:
  • 二、前端搭建:
    • 2.1 搭建流程:
    • 2.2 前端零件:
      • 2.2.1 nginx 容器创建:
      • 2.2.2 nginx.conf 文件:
      • 2.2.3 nginx html 数据卷所在位置:
      • 2.2.4 nginx conf 数据卷所在位置:
  • 三、总结
    • 3.1 后端:
    • 3.2 前端:

由于之前做若依的二次开发项目,项目完成之后想部署到云服务器,折腾了好久才部署成功,所以总结下来,希望能帮到大家。

这里是使用docker进行部署的,如果想用别的方式部署,就需要友友网上再找找了。

这里做个规定:下面说到使用零件的意思就是使用下面我给出的资料,在对应资料有说明,友友要记得看,修改成自己的项目情况。

一、搭建后端

1.1 搭建流程:

  1. 首先需要把后端项目需要的程序先搭建好,如 mysql,redis(使用零件)

  2. 创建网桥(推荐根据项目命名),把mysql,redis和nginx(后面前端布置,现在先不用)放在一起

  3. 打包后端项目(后端项目的mysql和redis对应配置文件记得修改,如果放在一个网桥里面,可以使用网桥名称 )。

image-20241223094433308

  1. 在云服务器里面单独开一个文件夹(推荐使用项目相关名称命名),把后端项目上传到文件夹里面.(优点:便于管理)

  2. 在文件夹里面创建Dockerfile文件,填入对应零件内容(使用零件)

image-20241223090605902

  1. 构建镜像(使用零件)

  2. 创建后端容器(使用零件)

1.2 后端零件:

1.2.1 mysql容器创建:

这里设置的mysql密码为123,有需要的友友自己修改一下。

docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123 \  
  -v ./mysql/data:/var/lib/mysql \
  -v ./mysql/conf:/etc/mysql/conf.d \
  -v ./mysql/init:/docker-entrypoint-initdb.d \
  mysql
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

1.2.2 redis容器创建:

这里设置的redis密码为123456,有需要的友友自己修改一下。

docker run -d \
  --name redis \
  -p 6379:6379 \
  -e REDIS_PASSWORD=123456 \
  redis:latest \
  • 1
  • 2
  • 3
  • 4
  • 5

1.2.3 Dockerfile内容:

openjdk 是jdk的版本,这里使用的是jdk11,如果想使用其它版本可以自己改,一般直接用11也是可以的。

这里需要修改的就是xxx部分,修改成自己后端项目的名称,其它的不用改。

# 基础镜像
FROM openjdk:11.0-jre-buster
# 设定时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 拷贝jar包
COPY xxxxx.jar /app.jar
# 入口
ENTRYPOINT ["java", "-jar", "/app.jar"]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

1.2.4 构建项目镜像:

注意:构建镜像需要看完下面的解释之后再进行操作,一定一定。

docker build -t 镜像名称 .
  • 1
  1. . 表示Dockerfile文件路径就在当前路径。例如下图:自己在 root/dkd 中,Dockerfile 文件也在 root/dkd 中就可以使用.。

  2. 镜像名称无所谓,最好其和项目有关的。

  3. 后端项目需要放在和Dockerfile相同的文件夹里面。

  4. 基本和下图一样(项目名称不一样),除了 mysql,mysql 不需要创建在哪里(那里是错误的),mysql的数据我们使用客户端工具连上自己加。

image-20241217161210265

1.2.5 创建后端容器:

docker run -d \
  --name 容器名(自己指定) \
  -p 8080:8080 \
  --network 网桥名 \
  镜像名(前面构建的)
  • 1
  • 2
  • 3
  • 4
  • 5

二、前端搭建:

2.1 搭建流程:

  1. nginx 容器创建(使用零件),记得放到网桥里面。
  2. 打包前端项目,生成 dist 文件(前端项目所在位置)。

下图为如何打包

image-20241217154852338

下图为 dist 所在文件夹(在项目文件夹里面):

image-20241217165805588
  1. 把 dist 里面的所有内容拷贝到/var/lib/docker/volumes/html/_data 目录里面
image-20241217170127979
  1. 修改/var/lib/docker/volumes/conf/_data/ 文件夹里面的 nginx.conf 文件(直接贴零件,稍加修改)。
image-20241217170247293
  1. 最后不要忘记要重启 nginx 容器刷新配置。

2.2 前端零件:

不一定都会用到。

2.2.1 nginx 容器创建:

一般不用改。

docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html -v conf:/etc/nginx nginx
  • 1

2.2.2 nginx.conf 文件:

注意:下面有些要修改成自己项目的。

user  root;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/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  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;


    server {
        listen       80;
        server_name  159.75.xxx.145(记得切换);

        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html; #防止刷新报404
            # try_files $uri $uri/ /index.html;
        }

        # location /prod-api/{
        #     proxy_set_header Host $http_host;ls
        #     proxy_set_header X-Real-IP $remote_addr;
        #     proxy_set_header REMOTE-HOST $remote_addr;
        #     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        #     proxy_pass http://159.75.xxx.145:8080/;
        # }

        location /prod-api/{
			proxy_set_header Host $http_host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header REMOTE-HOST $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_pass http://dkd-project(记得切换):8080/;
		}		
		location /dev-api/{
			proxy_set_header Host $http_host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header REMOTE-HOST $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_pass http://dkd-project(记得切换):8080/;
		}

        

    }

    include /etc/nginx/conf.d/*.conf;



   
}


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76

2.2.3 nginx html 数据卷所在位置:

/var/lib/docker/volumes/html/_data
  • 1

2.2.4 nginx conf 数据卷所在位置:

/var/lib/docker/volumes/conf/_data/
  • 1

三、总结

3.1 后端:

最好要把后端项目分成开发和上线两个部分(打包的时候记得切换到上线部分)。

只要把mysql(数据要有)和redis先搭建好,后端自己制作镜像创建容器即可,注意点就是,项目访问mysql和redis是通过网桥来访问的,好处可以少开放一点端口,加快访问速度。

后端构建镜像需要Dockerfile文件。

3.2 前端:

首先创建nginx容器(要把conf和html文件,挂载出来)。

前端项目基本不用动。

把dist里面的文件放入html/_data里面。

配置conf文件。

最后要把nginx放到网桥里面。

结语:
其实写博客不仅仅是为了教大家,同时这也有利于我巩固知识点,和做一个学习的总结,由于作者水平有限,对文章有任何问题还请指出,非常感谢。如果大家有所收获的话,还请不要吝啬你们的点赞收藏和关注,这可以激励我写出更加优秀的文章。

在这里插入图片描述

注:本文转载自blog.csdn.net的gobeyye的文章"https://blog.csdn.net/2301_80035594/article/details/144822022"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

115
云原生
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top