zhangjava's blog zhangjava's blog
首页
  • 学习笔记

    • 《从零开始学Python》
生活
  • 专题

    • 从零搭建开发部署自动化
更多
关于
  • 网站
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

zhangjava

用技术改变世界
首页
  • 学习笔记

    • 《从零开始学Python》
生活
  • 专题

    • 从零搭建开发部署自动化
更多
关于
  • 网站
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 前言
  • 安装ubuntu-24.04.1-server系统
  • 安装docker
  • 安装docker-compose
  • VMware复制多个虚拟机
  • 安装Jenkins
  • 安装Harbor
  • 安装GitLab
  • 配置项目部署服务器
    • 1. 复制项目到GitLab
    • 2. 部署三方服务
      • 2.1 初始化数据库
      • 2.2 配置nacos
      • 2.3 修改源码
      • 2.3.1 修改后端
      • 2.3.2 修改前端
      • 2.4 编写docker-compose文件
  • Jenkins配置自动化流程
  • 从零搭建开发部署自动化
zhangjava
2025-03-05
目录

配置项目部署服务器

我使用开源的项目框架若依 (opens new window)SpringCloud版本来进行部署演示。

# 1. 复制项目到GitLab

登录已经部署好的GitLab服务,新增一个项目,我这里选择导入项目。

image-20250307151112143

选择导入仓库url

image-20250307151203599

将若依的仓库地址复制到Git仓库URL

image-20250307153249433

点击新建项目按钮,开始导入项目。

image-20250307153354957

项目导入完成后,会自动跳转到项目主页。

image-20250307153429901

# 2. 部署三方服务

创建/root/project/ruoyi/third-server目录,用来部署项目依赖的第三方服务。

mkdir -p /root/project/ruoyi/third-server
1

若依的源码下,有docker目录,里面是提前写好的docker-compose.yml文件

image-20250307160812120

修改docker-compose.yml内容,只保留nacos、mysql、redis的配置

name: "third-server"
services:
  ruoyi-nacos:
    container_name: ruoyi-nacos
    image: nacos/nacos-server
    build:
      context: ./nacos
    environment:
      - MODE=standalone
    volumes:
      - ./nacos/logs/:/home/nacos/logs
      - ./nacos/conf/application.properties:/home/nacos/conf/application.properties
    ports:
      - "8848:8848"
      - "9848:9848"
      - "9849:9849"
    depends_on:
      - ruoyi-mysql
  ruoyi-mysql:
    container_name: ruoyi-mysql
    image: mysql:5.7
    build:
      context: ./mysql
    ports:
      - "3306:3306"
    volumes:
      - ./mysql/conf:/etc/mysql/conf.d
      - ./mysql/logs:/logs
      - ./mysql/data:/var/lib/mysql
    command: [
          'mysqld',
          '--innodb-buffer-pool-size=80M',
          '--character-set-server=utf8mb4',
          '--collation-server=utf8mb4_unicode_ci',
          '--default-time-zone=+8:00',
          '--lower-case-table-names=1'
        ]
    environment:
      MYSQL_DATABASE: 'ry-cloud'
      MYSQL_ROOT_PASSWORD: password
  ruoyi-redis:
    container_name: ruoyi-redis
    image: redis
    build:
      context: ./redis
    ports:
      - "6379:6379"
    volumes:
      - ./redis/conf/redis.conf:/home/ruoyi/redis/redis.conf
      - ./redis/data:/data
    command: redis-server /home/ruoyi/redis/redis.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

修改redis配置文件,放开密码注释

image-20250307163655590

修改nacos配置文件,开启鉴权

image-20250307171500969

注意

项目源码里的配置项有问题,需要将nacos.core.auth.default.token.expire.seconds修改为nacos.core.auth.plugin.nacos.token.expire.seconds,将nacos.core.auth.default.token.secret.key修改为nacos.core.auth.plugin.nacos.token.secret.key否则启动会报错

image-20250307172156955

参考链接:https://nacos.io/docs/latest/manual/admin/auth/ (opens new window)

将docker-compose.yml、nacos目录、mysql目录、redis目录上传到服务器的third-server目录下。

image-20250307164930924

在third-server目录下,执行

docker-compose up ruoyi-mysql -d
1

先启动MySQL服务。

# 2.1 初始化数据库

使用MySQL客户端工具,连接MySQL,用户名:root,密码:password。

image-20250307165338789

使用sql脚本初始化数据库。

image-20250307165617097

image-20250307165830772

数据库初始化完成后,回到third-server目录下,执行

docker-compose up -d
1

启动所有服务。

# 2.2 配置nacos

浏览器访问http://IP:8848/nacos/#/login,打开nacos管理页面。

image-20250307172828186

用户名和密码都是nacos

image-20250307172957160

修改所有配置中的redis连接为宿主机IP,密码为123456

修改所有配置中的mysql连接为宿主机IP,密码为password

# 2.3 修改源码

# 2.3.1 修改后端

修改源码,增加maven-docker打包配置插件

在父级的pom.xml中,增加版本配置

<!-- docker镜像仓库地址 -->
<docker.registry.url>192.168.127.132</docker.registry.url>
<!-- docker打包地址 -->
<docker.host>http://192.168.127.131:2375</docker.host>
<docker.plugin.version>1.2.2</docker.plugin.version>
1
2
3
4
5

image-20250307175336517

修改子模块的pom.xml打包配置,这里以ruoyi-auth为例

<build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>${docker.plugin.version}</version>
                <configuration>
                    <!-- 打包后的最终镜像名称 -->
                    <imageName>${docker.registry.url}:80/ruoyi_dev/${project.artifactId}:${project.version}</imageName>
                    <!-- docker地址,用于进行远程docker build打包 -->
                    <dockerHost>${docker.host}</dockerHost>
                    <!-- 镜像基座,使用openjdk8 -->
                    <baseImage>openjdk:8-jre</baseImage>
                    <!-- 作者信息 -->
                    <maintainer>zhangjava</maintainer>
                    <!-- 构建镜像时执行的命令,多条命令使用空格分割 -->
                    <runs>mkdir -p /ruoyi/auth <![CDATA[&&]]> ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime <![CDATA[&&]]> echo 'Asia/Shanghai' >/etc/timezone</runs>
                    <!-- 设置容器运行时的工作目录 -->
                    <workdir>/ruoyi/auth</workdir>
                    <!-- 暴露端口-->
                    <exposes>
                        <expose>9200</expose>
                    </exposes>
                    <!-- 执行容器命令 -->
                    <entryPoint>["java","-Djava.security.egd=file:/dev/./urandom", "-jar", "${project.build.finalName}.jar"]</entryPoint>
                    <!-- 资源目录,在dockerfile中类似于ADD指令 -->
                    <resources>
                        <resource>
                            <targetPath>/ruoyi/auth</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                    <!-- docker镜像仓库地址 -->
                    <registryUrl>${docker.registry.url}</registryUrl>
                    <!-- 关联maven配置中的servers配置,用于 Docker 登录的凭据 -->
                    <serverId>${docker.registry.url}</serverId>
                    <!-- 镜像构建完成后,推送镜像 -->
                    <pushImage>true</pushImage>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
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

注意

在<imageName>${docker.registry.url}:80/ruoyi_dev/${project.artifactId}:${project.version}</imageName>这个配置中,ruoyi_dev是harbor中的项目名称,必须要提前创建好,否则推送镜像时会失败。

image-20250307183244659

修改bootstrap.yml配置文件

# Tomcat
server:
  port: 9200

# Spring
spring:
  application:
    # 应用名称
    name: ruoyi-auth
  profiles:
    # 环境配置
    active: dev
  cloud:
    nacos:
      discovery:
        # 服务注册地址
        server-addr: 192.168.127.134:8848
        username: nacos
        password: nacos
      config:
        # 配置中心地址
        server-addr: 192.168.127.134:8848
        username: nacos
        password: nacos
        # 配置文件格式
        file-extension: yml
        # 共享配置
        shared-configs:
          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
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

依次将其他模块都修改完成。

# 2.3.2 修改前端

在ruoyi-ui目录下,新增两个文件

Dockerfile

FROM nginx:stable-alpine-perl

RUN rm -f /etc/nginx/nginx.conf \
    && rm -f /etc/nginx/conf.d/default.conf
COPY nginx.conf /etc/nginx/nginx.conf

EXPOSE 80

COPY ./dist /usr/share/nginx/html

ENTRYPOINT ["nginx", "-g", "daemon off;"]

1
2
3
4
5
6
7
8
9
10
11
12

nginx.conf


user root;
worker_processes  1;

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

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile      on;
    keepalive_timeout  65;
    client_max_body_size 50M;

    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;

    server {
      listen       80;
      server_name  web;
      root         /usr/share/nginx/html;

      client_max_body_size 50M;

      location / {
        try_files $uri $uri/ /index.html;
        index  index.html index.htm;
      }

      location /prod-api/ {
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_buffering off;
          rewrite ^/prod-api/(.*)$ /$1 break;
          #代理地址的名称,要和网关服务名一致
          proxy_pass http://ruoyi-gateway:8080;
      }

      # 避免actuator暴露
      if ($request_uri ~ "/actuator") {
          return 403;
      }

      error_page 500 502 503 504 /50x.html;
      location = /50x.html {
          root html;
      }
    }
}
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

源码修改完成后,将代码提交到gitlab。

# 2.4 编写docker-compose文件

name : 'ruoyi'
services:
  
  ruoyi-ui:
    container_name: ruoyi-ui
    image: 192.168.127.132:80/ruoyi_dev/ruoyi-ui:3.6.5
    restart: always
    ports:
      - "10003:80"
  
  ruoyi-auth:
    container_name: ruoyi-auth
    image: 192.168.127.132:80/ruoyi_dev/ruoyi-auth:3.6.5
    restart: always
    volumes:
      - ./logs/auth:/ruoyi/auth/logs/ruoyi-auth
    expose:
      - 9200
  
  ruoyi-gateway:
    container_name: ruoyi-gateway
    image: 192.168.127.132:80/ruoyi_dev/ruoyi-gateway:3.6.5
    restart: always
    volumes:
      - ./logs/gateway:/ruoyi/gateway/logs/ruoyi-gateway
    expose:
      - 8080

  ruoyi-file:
    container_name: ruoyi-file
    image: 192.168.127.132:80/ruoyi_dev/ruoyi-modules-file:3.6.5
    restart: always
    volumes:
      - ./logs/file:/ruoyi/file/logs/ruoyi-file
    expose:
      - 9300

  ruoyi-gen:
    container_name: ruoyi-gen
    image: 192.168.127.132:80/ruoyi_dev/ruoyi-modules-gen:3.6.5
    restart: always
    volumes:
      - ./logs/gen:/ruoyi/gen/logs/ruoyi-gen
    expose:
      - 9202

  ruoyi-job:
    container_name: ruoyi-job
    image: 192.168.127.132:80/ruoyi_dev/ruoyi-modules-job:3.6.5
    restart: always
    volumes:
      - ./logs/job:/ruoyi/job/logs/ruoyi-job
    expose:
      - 9203

  ruoyi-system:
    container_name: ruoyi-system
    image: 192.168.127.132:80/ruoyi_dev/ruoyi-modules-system:3.6.5
    restart: always
    volumes:
      - ./logs/system:/ruoyi/system/logs/ruoyi-system
    expose:
      - 9201
  
  ruoyi-monitor:
    container_name: ruoyi-monitor
    image: 192.168.127.132:80/ruoyi_dev/ruoyi-visual-monitor:3.6.5
    restart: always
    volumes:
      - ./logs/monitor:/ruoyi/monitor/logs/ruoyi-monitor
    expose:
      - 9100
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

创建/root/project/ruoyi/server目录,用来部署项目。

将编辑好的docker-compose.yml文件,上传到该目录下。

image-20250307190627976

编辑 (opens new window)
安装GitLab
Jenkins配置自动化流程

← 安装GitLab Jenkins配置自动化流程→

最近更新
01
Jenkins配置自动化流程
03-05
02
安装GitLab
03-05
03
安装Harbor
03-05
更多文章>
Theme by Vdoing | Copyright © 2025-2025 zhangjava | MIT License | 晋ICP备2023016205号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式