若依微服务框架在docker-compose中部署

一、安装docker

1. 卸载旧版本

# Ubuntu/Debian
sudo apt remove docker docker-engine docker.io containerd runc

# CentOS/RHEL
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

2. 安装工具

# Ubuntu/Debian
sudo apt update && sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release

# CentOS/RHEL
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

3. 安装docker仓库

# Ubuntu/Debian
# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
#如果报错:File '/usr/share/keyrings/docker-archive-keyring.gpg' exists. Overwrite? (y/N) curl: (35) OpenSSL SSL_connect: Connection reset by peer in connection to download.docker.com:443 
#使用阿里云镜像
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
#如果提示文件已存在,先删除,再运行上方命令
sudo rm /usr/share/keyrings/docker-archive-keyring.gpg

# ‌设置稳定版仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# ‌安装Docker引擎
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io


‌CentOS/RHEL
#添加Docker仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 安装Docker引擎
sudo yum install -y docker-ce docker-ce-cli containerd.io

4. 配置与优化

#启动Docker服务并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker

#将当前用户加入docker组(避免频繁使用sudo)
sudo usermod -aG docker $USER
newgrp docker  # 立即生效或重新登录系

配置镜像加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"]
}
EOF

修改daemon.json添加下方各种加速器地址

{
  "registry-mirrors": [
		"https://docker.mirrors.ustc.edu.cn",
		"https://docker.wanpeng.top",
        "https://registry.docker-cn.com",
        "https://mirror.ccs.tencentyun.com",
        "https://mr63yffu.mirror.aliyuncs.com",
	    "https://docker.mirrors.ustc.edu.cn",
    	"https://hub-mirror.c.163.com",
	    "https://docker.domys.cc"
        ]
}
# 重启Docker服务生效
sudo systemctl daemon-reload
sudo systemctl restart docker

5. 验证安装

docker --version
# 输出示例:Docker version 24.0.7, build afdd53b
sudo systemctl start docker		# 启动 docker 服务:
sudo systemctl stop docker		# 停止 docker 服务:
sudo systemctl status docker	# 查看 docker 服务状态
sudo systemctl restart docker	# 重启 docker 服务

二、IDEA中修改若依框架中的docker配置
1. docker文件夹目录

docker
├── mysql            // 数据库
│       └── db                            // 数据库脚本
│       └── dockerfile                    // mysql dockerfile
├── nacos            // 注册中心/配置中心
│       └── conf                          // nacos 配置文件
│       └── dockerfile                    // nacos dockerfile
├── nginx            // web服务器
│       └── conf                          // nginx 配置文件
│       └── html                          // 打包后的前端ui
│       └── dockerfile                    // nginx dockerfile
├── redis            // 缓存服务
│       └── conf                          // redis 配置文件
│       └── dockerfile                    // redis dockerfile
├── ruoyi            // 业务模块
│       └── auth                          // 认证中心 dockerfile jar
│       └── gateway                       // 网关模块 dockerfile jar
│       └── modules                       // 业务模块 dockerfile jar
│       └── visual                        // 图形化管理模块 dockerfile jar
│── copy.sh                 // 拷贝jar包到docker文件中的脚本
├── deploy.sh               // 部署脚本
├── docker-compose.yml      // docker-compose

2. 各种配置的文件内容
mysql的dockerfile文件:mysql:5.7中的5.7为数据库版本号,修改为项目所需版本

# 基础镜像
FROM mysql:5.7
# author
MAINTAINER ruoyi

# 执行sql脚本
ADD ./db/*.sql /docker-entrypoint-initdb.d/

nacos的dockerfile文件

# 基础镜像
FROM nacos/nacos-server
# author
MAINTAINER ruoyi

# 复制conf文件到路径
COPY ./conf/application.properties /home/nacos/conf/application.properties

修改nacos/conf/application.properties文件中的数据库连接配置
如果使用docker中的mysql数据库镜像就使用ruoyi-mysql,如果使用外部mysql数据库就使用ip

spring.datasource.platform=mysql
db.num=1
#docker内部数据库
#db.url.0=jdbc:mysql://ruoyi-mysql:3306/ry-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
#db.user=root
#db.password=password
#docker外部数据库
db.url.0=jdbc:mysql://192.168.1.1:3306/ry-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=root

nacos.naming.empty-service.auto-clean=true
nacos.naming.empty-service.clean.initial-delay-ms=50000
nacos.naming.empty-service.clean.period-time-ms=30000

management.endpoints.web.exposure.include=*

management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false

server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i

server.tomcat.basedir=/home/ruoyi/nacos/tomcat/logs

nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-ui/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**  

nacos.core.auth.system.type=nacos
nacos.core.auth.enabled=false
nacos.core.auth.default.token.expire.seconds=18000
nacos.core.auth.default.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
nacos.core.auth.caching.enabled=true
nacos.core.auth.enable.userAgentAuthWhite=false
nacos.core.auth.server.identity.key=serverIdentity
nacos.core.auth.server.identity.value=security

nacos.istio.mcp.server.enabled=false

nginx的dockerfile文件

# 基础镜像
FROM nginx
# author
MAINTAINER ruoyi

# 挂载目录
VOLUME /home/ruoyi/projects/ruoyi-ui
# 创建目录
RUN mkdir -p /home/ruoyi/projects/ruoyi-ui
# 指定路径
WORKDIR /home/ruoyi/projects/ruoyi-ui
# 复制conf文件到路径
COPY ./conf/nginx.conf /etc/nginx/nginx.conf
# 复制html文件到路径
COPY ./html/dist /home/ruoyi/projects/ruoyi-ui

如果部署vue前端就修改nginx/conf/nginx.conf文件

worker_processes  1;

events {
    worker_connections  1024;
}

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

    server {
        listen       80;
        server_name  localhost;

        location / {
            root   /home/ruoyi/projects/ruoyi-ui;#前端vue项目的服务器位置
            try_files $uri $uri/ /index.html;
            index  index.html index.htm;
        }

        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://ruoyi-gateway:8080/;#网关地址
        }

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

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

redis的dockerfile文件

# 基础镜像
FROM redis
# author
MAINTAINER ruoyi

# 挂载目录
VOLUME /home/ruoyi/redis
# 创建目录
RUN mkdir -p /home/ruoyi/redis
# 指定路径
WORKDIR /home/ruoyi/redis
# 复制conf文件到路径
COPY ./conf/redis.conf /home/ruoyi/redis/redis.conf

ruoyi/gateway的dockerfile文件

# 基础镜像
FROM  openjdk:8-jre
# author
MAINTAINER ruoyi

# 设置构建参数强制不使用缓存
ARG CACHEBUST=1

# 挂载目录
VOLUME /home/ruoyi
# 创建目录
RUN mkdir -p /home/ruoyi
# 指定路径
WORKDIR /home/ruoyi
# 复制jar文件到路径
COPY ./jar/ruoyi-gateway.jar /home/ruoyi/ruoyi-gateway.jar
# 启动网关服务
ENTRYPOINT ["java","-Xms512m", "-Xmx1024m","-jar","ruoyi-gateway.jar"]

gateway的bootstrap.yml文件

# Tomcat
server:
  port: 8080 #本地

# Spring
spring: 
  application:
    # 应用名称
    name: ruoyi-gateway
  profiles:
    # 环境配置
    active: dev
  cloud:
    nacos:
      discovery:
        # 服务注册地址
        #server-addr: 127.0.0.1:8848 #本地
        server-addr: ruoyi-nacos:8848 #服务器docker
        #server-addr: mse-xxxxxxxx-nacos-ans.mse.aliyuncs.com:8848 #阿里云服务器
      config:
        # 配置中心地址
        #server-addr: 127.0.0.1:8848 #本地
        server-addr: ruoyi-nacos:8848 #服务器docker
        #server-addr: mse-xxxxxxxx-nacos-ans.mse.aliyuncs.com:8848 #阿里云服务器
        # 配置文件格式
        file-extension: yml
        # 共享配置
        shared-configs:
          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

ruoyi/modules/system的dockerfile文件

# 基础镜像
FROM  openjdk:8-jre
# author
MAINTAINER ruoyi

# 设置构建参数强制不使用缓存
ARG CACHEBUST=1

# 挂载目录
VOLUME /home/ruoyi
# 创建目录
RUN mkdir -p /home/ruoyi
# 指定路径
WORKDIR /home/ruoyi
# 复制jar文件到路径
COPY ./jar/ruoyi-modules-system.jar /home/ruoyi/ruoyi-modules-system.jar
# 启动文件服务
ENTRYPOINT ["java","-Xms512m", "-Xmx1024m","-jar","ruoyi-modules-system.jar"]

gateway的bootstrap.yml文件

# Tomcat
server:
  port: 9201 #本地

# Spring
spring: 
  application:
    # 应用名称
    name: ruoyi-system
  profiles:
    # 环境配置
    active: dev
  cloud:
    nacos:
      discovery:
        # 服务注册地址
        #server-addr: 127.0.0.1:8848 #本地
        server-addr: ruoyi-nacos:8848 #服务器docker
        #server-addr: mse-xxxxxxxx-nacos-ans.mse.aliyuncs.com:8848 #阿里云服务器
      config:
        # 配置中心地址
        #server-addr: 127.0.0.1:8848 #本地
        server-addr: ruoyi-nacos:8848 #服务器docker
        #server-addr: mse-xxxxxxxx-nacos-ans.mse.aliyuncs.com:8848 #阿里云服务器
        # 配置文件格式
        file-extension: yml
        # 共享配置
        shared-configs:
          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

其余的服务按照gateway和system服务更改。
使用maven打包之后,可以手动把jar放到docker/ruoyi对应服务文件的jar目录下,也可以运行copy.sh脚本

copy.sh脚本文件

#!/bin/sh

# 复制项目的文件到对应docker路径,便于一键生成镜像。
usage() {
	echo "Usage: sh copy.sh"
	exit 1
}


# copy sql
#echo "begin copy sql "
#cp ../sql/ry_20240629.sql ./mysql/db
#cp ../sql/ry_config_20240902.sql ./mysql/db

 copy html
echo "begin copy html "
cp -r ../ruoyi-ui/dist/** ./nginx/html/dist


# copy jar
echo "begin copy ruoyi-gateway "
cp ../ruoyi-gateway/target/ruoyi-gateway.jar ./ruoyi/gateway/jar

echo "begin copy ruoyi-auth "
cp ../ruoyi-auth/target/ruoyi-auth.jar ./ruoyi/auth/jar

echo "begin copy ruoyi-visual "
cp ../ruoyi-visual/ruoyi-monitor/target/ruoyi-visual-monitor.jar  ./ruoyi/visual/monitor/jar

echo "begin copy ruoyi-modules-system "
cp ../ruoyi-modules/ruoyi-system/target/ruoyi-modules-system.jar ./ruoyi/modules/system/jar

echo "begin copy ruoyi-modules-file "
cp ../ruoyi-modules/ruoyi-file/target/ruoyi-modules-file.jar ./ruoyi/modules/file/jar

echo "begin copy ruoyi-modules-job "
cp ../ruoyi-modules/ruoyi-job/target/ruoyi-modules-job.jar ./ruoyi/modules/job/jar

echo "begin copy ruoyi-modules-gen "
cp ../ruoyi-modules/ruoyi-gen/target/ruoyi-modules-gen.jar ./ruoyi/modules/gen/jar

deploy.sh脚本文件

#!/bin/sh

# 使用说明,用来提示输入参数
usage() {
	echo "Usage: sh 执行脚本.sh [port|base|modules|stop|rm]"
	exit 1
}

# 开启所需服务端口
port(){
	firewall-cmd --add-port=80/tcp --permanent
	firewall-cmd --add-port=8080/tcp --permanent
	firewall-cmd --add-port=8848/tcp --permanent
	firewall-cmd --add-port=9848/tcp --permanent
	firewall-cmd --add-port=9849/tcp --permanent
	firewall-cmd --add-port=6379/tcp --permanent
	firewall-cmd --add-port=3306/tcp --permanent
	service firewalld restart
}

# 启动基础环境(必须)
base(){
	docker-compose up -d ruoyi-redis ruoyi-nacos
}

# 启动程序模块(必须)
modules(){
	docker-compose up -d  ruoyi-nginx ruoyi-gateway ruoyi-auth ruoyi-modules-system ruoyi-modules-file ruoyi-modules-job ruoyi-modules-gen
}

# 关闭所有环境/模块
stop(){
	#停止启动的所有服务
	#docker-compose stop 
	#停止指定服务
	docker-compose stop ruoyi-nginx ruoyi-gateway ruoyi-auth ruoyi-modules-system ruoyi-modules-file ruoyi-modules-job ruoyi-modules-gen  
}

# 删除所有环境/模块
rm(){
	#删除所有服务
	#docker-compose rm
	#删除指定服务
	docker-compose rm ruoyi-gateway ruoyi-auth
}

# 根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
"port")
	port
;;
"base")
	base
;;
"modules")
	modules
;;
"stop")
	stop
;;
"rm")
	rm
;;
*)
	usage
;;
esac

docker-compose.yml文件

version : '3.8'  #v1.x版需要指定version, v2.x版不需要指定
services:
  ruoyi-nacos:
    container_name: ruoyi-nacos
    image: nacos/nacos-server:v2.2.0
    pull_policy: never  # 禁止拉取镜像,强制使用本地
    build:
      context: ./nacos
    environment:
      - MODE=standalone
      - SPRING_DATASOURCE_PLATFORM=mysql  # 若使用外置数据库
    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
 #如果是使用外部mysql数据库就注释掉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: root
  ruoyi-redis:
    container_name: ruoyi-redis
    image: redis
    pull_policy: never  # 禁止拉取镜像,强制使用本地
    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
  ruoyi-nginx:
    container_name: ruoyi-nginx
    image: nginx
    pull_policy: never  # 禁止拉取镜像,强制使用本地
    build:
      context: ./nginx
    ports:
      - "80:80"
    volumes:
      - ./nginx/html/dist:/home/ruoyi/projects/ruoyi-ui
      - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf
      - ./nginx/logs:/var/log/nginx
      - ./nginx/conf.d:/etc/nginx/conf.d
    depends_on:
      - ruoyi-gateway
    links:
      - ruoyi-gateway
  ruoyi-gateway:
    container_name: ruoyi-gateway
    pull_policy: always
    build:
      context: ./ruoyi/gateway
      dockerfile: dockerfile
    ports:
      - "9301:9301"
    depends_on:
      - ruoyi-redis
      - ruoyi-nacos
    links:
      - ruoyi-redis
      - ruoyi-nacos
    environment: #改为东八区时区
      - TZ=Asia/Shanghai
    healthcheck: #取消校验,启动镜像时速度会快一点
      test: ["CMD", "curl", "-f", "http://localhost:9301/actuator/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 20s
  ruoyi-auth:
    container_name: ruoyi-auth
    pull_policy: always
    build:
      context: ./ruoyi/auth
      dockerfile: dockerfile
    ports:
      - "9300:9300"
    depends_on:
      - ruoyi-redis
      - ruoyi-nacos
    links:
      - ruoyi-redis
      - ruoyi-nacos
    environment:
      - TZ=Asia/Shanghai
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9300/actuator/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 20s
  ruoyi-modules-system:
    container_name: ruoyi-modules-system
    pull_policy: always
    build:
      context: ./ruoyi/modules/system
      dockerfile: dockerfile
    ports:
      - "9302:9302"
    depends_on:
      - ruoyi-redis
      - ruoyi-nacos
    links:
      - ruoyi-redis
      - ruoyi-nacos
    environment:
      - TZ=Asia/Shanghai
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9302/actuator/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 20s
  ruoyi-modules-gen:
    container_name: ruoyi-modules-gen
    build:
      context: ./ruoyi/modules/gen
      dockerfile: dockerfile
    ports:
      - "9303:9303"
    depends_on:
      - ruoyi-mysql
    links:
      - ruoyi-mysql
    environment:
      - TZ=Asia/Shanghai
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9304/actuator/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 20s
  ruoyi-modules-job:
    container_name: ruoyi-modules-job
    pull_policy: always
    build:
      context: ./ruoyi/modules/job
      dockerfile: dockerfile
    ports:
      - "9310:9310"
    depends_on:
      - ruoyi-nacos
    links:
      - ruoyi-nacos
    environment:
      - TZ=Asia/Shanghai
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9310/actuator/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 20s
  ruoyi-modules-file:
    container_name: ruoyi-modules-file
    pull_policy: always
    build:
      context: ./ruoyi/modules/file
      dockerfile: dockerfile
    ports:
      - "9306:9306"
    volumes:
    - ./ruoyi/uploadPath:/home/ruoyi/uploadPath
    depends_on:
      - ruoyi-redis
      - ruoyi-nacos
    links:
      - ruoyi-redis
      - ruoyi-nacos
    environment:
      - TZ=Asia/Shanghai
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9306/actuator/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 20s
  ruoyi-visual-monitor:
    container_name: ruoyi-visual-monitor
    build:
      context: ./ruoyi/visual/monitor
      dockerfile: dockerfile
    ports:
      - "9100:9100"
 #其他服务的配置和上方一致

3.使用maven打包,将jar包放到对应文件夹的jar目录下,把docker整个目录上传到服务器home目录下。

4.运行docker/docker-compose命令
先在docker中下载jdk、nacos、redis和nginx

docker pull openjdk:8-jre

#docker pull nacos/nacos-server:v2.0.4
docker pull nacos/nacos-server:v2.2.0

docker pull redis:latest

docker pull nginx:latest

启动服务docker镜像
进入docker目录,如果不是root账号可以 sudo -i ,输入当前账号密码切换成root账号

cd /home/docker

先启动nacos和redis,等待nacos启动成功(一分钟左右),再启动其他服务
http://ip:8848/nacos/
账号:nacos
密码:nacos

./deploy.sh base
./deploy.sh modules

若依项目部署docker时输入./deploy.sh base
提示-bash: ./deploy.sh: Permission denied
sudo chmod -R 777 /home/docker
-bash: ./deploy.sh: cannot execute: required file not found

1.检查并修复文件权限
# 进入脚本目录(假设脚本在若依项目的 docker 目录下)
cd ruoyi-project/docker

# 赋予执行权限
chmod +x deploy.sh

# 验证权限是否生效
ls -l deploy.sh
# 正确输出应包含 x 标志,如:-rwxr-xr-x

2.转换文件格式(修复 CRLF 问题)​​
# 安装 dos2unix 工具(如未安装)
sudo apt-get install dos2unix  # Debian/Ubuntu
sudo yum install dos2unix       # CentOS/RHEL

# 转换文件格式
dos2unix deploy.sh

3.验证并修复Shebang 行​​
# 检查首行解释器路径
head -1 deploy.sh
# 应输出:#!/bin/sh 或 #!/usr/bin/env sh

# 如果系统中没有 /bin/sh,修改为通用路径
sudo sed -i '1s|#!/bin/sh|#!/usr/bin/env sh|g' deploy.sh

重启时,需要先停止镜像,再删除docker-compose内镜像再删除docker中镜像,再启动

#查看docker镜像log日志
docker-compose logs ruoyi-gateway

docker-compose logs ruoyi-modules-system

#停止docker-compose中的镜像
./deploy.sh stop #全部停止
docker-compose stop ruoyi-gateway ruoyi-modules-system  #删除指定

#删除docker-compose中的镜像
./deploy.sh rm #全部删除
docker-compose rm ruoyi-gateway ruoyi-modules-system  #删除指定

#删除docker中的镜像
docker rmi -f $(docker images | grep ruoyi-modules-system | awk '{print $3}')
docker rmi -f $(docker images | grep ruoyi-gateway | awk '{print $3}')

或者直接在docker目录下新建ssh脚本文件,如 system.sh 脚本文件

#!/bin/bash

# 停止
docker-compose stop cmf-modules-system
# 再删除
docker-compose rm -f cmf-modules-system
# 删除旧镜像
docker rmi -f $(docker images | grep cmf-modules-system | awk '{print $3}')
# 启动
docker-compose up -d  cmf-modules-system

先转换文件格式,再运行脚本

dos2unix system.sh

sh system.sh

naocs中服务的配置文件:

ruoyi-gateway-dev.yml

spring:
  redis:
    host: ruoyi-redis
    port: 6379
    password: 
  cloud:
    gateway:
      discovery:
        locator:
          lowerCaseServiceId: true
          enabled: true
      routes:
        # 认证中心
        - id: ruoyi-auth
          uri: lb://ruoyi-auth
          predicates:
            - Path=/auth/**
          filters:
            # 验证码处理
            - CacheRequestFilter
            - ValidateCodeFilter
            - StripPrefix=1
        # 代码生成
        - id: ruoyi-gen
          uri: lb://ruoyi-gen
          predicates:
            - Path=/code/**
          filters:
            - StripPrefix=1
        # 定时任务
        - id: ruoyi-job
          uri: lb://ruoyi-job
          predicates:
            - Path=/schedule/**
          filters:
            - StripPrefix=1
        # 系统模块
        - id: ruoyi-system
          uri: lb://ruoyi-system
          predicates:
            - Path=/system/**
          filters:
            - StripPrefix=1
        # 文件服务
        - id: ruoyi-file
          uri: lb://ruoyi-file
          predicates:
            - Path=/file/**
          filters:
            - StripPrefix=1
        
# 安全配置
security:
  # 验证码
  captcha:
    enabled: true
    type: math
  # 防止XSS攻击
  xss:
    enabled: true
    excludeUrls:
      - /system/notice

  # 不校验白名单
  ignore:
    whites:
      - /auth/logout
      - /auth/login
      - /auth/register
      - /*/v2/api-docs
      - /*/v3/api-docs
      - /csrf

# springdoc配置
springdoc:
  webjars:
    # 访问前缀
    prefix:

ruoyi-system-dev.yml

# spring配置
spring:
  redis:
    host: ruoyi-redis
    #host: r-阿里云redis内网.redis.rds.aliyuncs.com  #阿里云redis内网地址
    port: 6379
    password: 
  datasource:
    druid:
      stat-view-servlet:
        enabled: true
        loginUsername: ruoyi
        loginPassword: 123456
    dynamic:
      druid:
        initial-size: 5
        min-idle: 5
        maxActive: 40
        maxWait: 60000
        connectTimeout: 30000
        socketTimeout: 60000
        timeBetweenEvictionRunsMillis: 60000
        minEvictableIdleTimeMillis: 300000
        validationQuery: SELECT 1 FROM DUAL
        testWhileIdle: true
        testOnBorrow: false
        testOnReturn: false
        poolPreparedStatements: true
        maxPoolPreparedStatementPerConnectionSize: 20
        filters: stat,slf4j
        connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
      datasource:
          # 主库数据源
          master:
            driver-class-name: com.mysql.cj.jdbc.Driver
            url: jdbc:mysql://ip:3306/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
            #url: jdbc:mysql://ruoyi-mysql::3306/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
            #url: jdbc:mysql://rm-阿里云mysql内网.mysql.rds.aliyuncs.com:3306/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
            username: root
            password: root
          # 从库数据源
          # slave:
            # username: 
            # password: 
            # url: 
            # driver-class-name: 
            
# mybatis配置
mybatis:
    # 搜索指定包别名
    typeAliasesPackage: com.ruoyi.system
    # 配置mapper的扫描,找到所有的mapper.xml映射文件
    mapperLocations: classpath:mapper/**/*.xml
### 若依框架 Docker 打包配置教程 #### 1. 准备工作 在开始之前,确保已经完成以下准备工作: - 安装好 DockerDocker Compose 工具[^1]。 - 配置阿里云镜像源以加速下载速度 `yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo`[^1]。 执行命令刷新 Yum 软件包缓存并安装 Docker 引擎及相关组件: ```bash yum makecache fast yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin ``` 启动 Docker 并验证其状态: ```bash systemctl start docker docker version ``` #### 2. 后端服务打包与容器化 后端部分基于 Java Spring Boot 构建,可以通过 Maven 或 Gradle 编译生成 JAR 文件。以下是具体的步骤: ##### (1) 使用 Maven 打包应用 进入项目的根目录,运行以下命令编译并生成可执行的 JAR 文件: ```bash mvn clean package -DskipTests=true ``` 这会将目标文件存储在 `/target` 目录下,通常命名为 `ruoyi-admin.jar`[^4]。 ##### (2) 制作 Dockerfile 创建一个名为 `Dockerfile` 的文件,内容如下: ```dockerfile FROM openjdk:8-jdk-alpine VOLUME /tmp EXPOSE 8085 ADD target/ruoyi-admin.jar app.jar ENTRYPOINT ["java", "-jar", "/app.jar"] ``` 此文件指定了基础镜像为 OpenJDK 8,并暴露了应用程序使用的端口(此处假设为 8085)。最后通过 `-jar` 参数加载程序入口点。 ##### (3) 构建镜像 利用上述 Dockerfile 来构建镜像: ```bash docker build -t ruoyi-backend . ``` ##### (4) 运行容器 启动容器并将本地数据卷映射至容器内部路径,同时绑定宿主机端口到容器内的服务端口: ```bash docker run --name ruoyi-container -v $(pwd)/data:/data -p 8085:8085 -d ruoyi-backend ``` #### 3. 前端服务部署 对于前端部分,则需借助 Nginx 提供静态资源访问支持[^3]。 ##### (1) Vue.js 应用打包 确认已成功构建生产环境下的前端代码库 (`dist`) 后继续操作。如果没有现成产物,请先按照官方文档指引完成相关流程。 ##### (2) 将 dist 复制到 NGINX 数据共享区域 查找当前系统中正在运行的所有 nginx 实例及其对应的挂载位置: ```bash docker ps | grep nginx docker inspect <container_id> | grep Mounts ``` 定位到实际物理磁盘上的对应目录之后复制过去即可。 调整默认站点配置文件使其指向新的 HTML 页面集合;或者直接替换掉原有 index.html 及关联样式脚本等内容片段。 #### 4. 统合管理方案 为了简化运维复杂度推荐采用 **Docker Compose** 方式统一描述多个相互依赖的服务实例之间的关系结构图谱[^2]。 编写一份 compose.yml 文档样例如下所示: ```yaml version: '3' services: backend: image: ruoyi-backend ports: - "8085:8085" environment: SPRING_DATASOURCE_URL: jdbc:mysql://db:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC frontend: image: nginx volumes: - ./frontend/dist:/usr/share/nginx/html depends_on: - backend db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: rootpassword ``` 以上定义涵盖了三个主要组成部分:后台 API 接口服务器、Web UI 展示界面以及数据库持久层逻辑单元三者之间如何协作交互的具体细节说明。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值