Commit ee2cfb9c0db030257d2737b54b2df4f8491571a6

Authored by YunaiV
1 parent a1f5a0f0

feat(deploy): 更新 Docker Compose 部署配置

将 script/docker 迁移为 script/docker-compose,更新 MySQL、Redis、后端和 Nginx 配置。
提供环境变量示例、初始化与运维说明,统一要求 Compose 2.20.2 及以上。
script/docker-compose/.env.example 0 → 100644
  1 +# 复制为 .env 后修改:cp .env.example .env
  2 +# 以下密码仅为示例,部署前请替换;.env 已被 .gitignore 忽略,不要提交
  3 +
  4 +## 前端 Nginx 对宿主机开放的端口
  5 +WEB_PORT=8080
  6 +
  7 +## 后端镜像 tag(每次重新打包后可修改,便于回滚)
  8 +IMAGE_TAG=local
  9 +
  10 +## MySQL(首次初始化时生效,已有数据卷后修改不会改变库内账号密码)
  11 +MYSQL_DATABASE=ruoyi-vue-pro
  12 +MYSQL_ROOT_PASSWORD=Root@ChangeMe2026
  13 +MYSQL_USER=yudao
  14 +MYSQL_PASSWORD=Yudao@ChangeMe2026
  15 +
  16 +## Redis
  17 +REDIS_PASSWORD=Redis@ChangeMe2026
  18 +
  19 +## 后端应用
  20 +SPRING_PROFILES_ACTIVE=dev
  21 +JAVA_OPTS=-Xms512m -Xmx512m -Djava.security.egd=file:/dev/./urandom
  22 +# 需与前端打包时的 VITE_APP_CAPTCHA_ENABLE 一致
  23 +YUDAO_CAPTCHA_ENABLE=true
script/docker-compose/.gitignore 0 → 100644
  1 +.env
  2 +web/dist/
script/docker-compose/README.md 0 → 100644
  1 +# Docker Compose 部署(单体版)
  2 +
  3 +目标:用 Docker Compose V2 快速搭建一套可登录的体验环境,了解各组件之间的依赖关系。
  4 +
  5 +包含:`yudao-server` 后端、前端 Nginx、MySQL、Redis。仅用于入门体验与测试,不是生产高可用方案。
  6 +
  7 +## 文件列表
  8 +
  9 +```text
  10 +script/docker-compose
  11 +├── README.md
  12 +├── docker-compose.yml <-- 编排文件,相对路径均相对于本目录
  13 +├── .env.example <-- 环境变量示例,复制为 .env 后修改
  14 +├── .gitignore <-- 忽略 .env、web/dist/
  15 +├── nginx
  16 +│ └── default.conf <-- 静态资源、history 回退、/admin-api、/app-api、/infra/ws 反向代理
  17 +└── web
  18 + └── dist <-- 需自行放入前端打包产物(不随仓库提供)
  19 +```
  20 +
  21 +| 服务 | 镜像 | 说明 |
  22 +| --- | --- | --- |
  23 +| `mysql` | `mysql:8.4` | 首次启动导入 `sql/mysql/ruoyi-vue-pro.sql`、`sql/mysql/quartz.sql`,数据卷 `yudao-boot_mysql-data` |
  24 +| `redis` | `redis:7.4-alpine` | 开启密码与 AOF,数据卷 `yudao-boot_redis-data` |
  25 +| `yudao-server` | `yudao-server:${IMAGE_TAG}` | 由 `yudao-server/Dockerfile` 构建,端口 48080,只在 Compose 网络内访问 |
  26 +| `web` | `nginx:1.28-alpine` | 对宿主机开放 `${WEB_PORT}`(默认 8080) |
  27 +
  28 +容器之间通过服务名(`mysql`、`redis`、`yudao-server`)访问。MySQL、Redis、后端默认不映射到宿主机,不会与本机已有的 3306、6379、48080 冲突;需要时取消 `docker-compose.yml` 中对应 `ports` 的注释。
  29 +
  30 +## 前置条件
  31 +
  32 +- Docker Engine + Docker Compose V2.20.2 及以上(`docker compose version` 可查看)
  33 +- JDK 17、Maven(与源码根 `pom.xml` 的 `java.version` 一致)
  34 +- 已按前端项目的部署说明完成打包
  35 +
  36 +## 1. 打包后端
  37 +
  38 +在**源码根目录**执行:
  39 +
  40 +```shell
  41 +mvn clean package -pl yudao-server -am -Dmaven.test.skip=true
  42 +```
  43 +
  44 +产物为 `yudao-server/target/yudao-server.jar`,`docker compose build` 时由 `yudao-server/Dockerfile` 复制进镜像。
  45 +
  46 +## 2. 准备前端产物
  47 +
  48 +前端是独立仓库,这里不构建前端源码。打包前确认前端生产环境配置:
  49 +
  50 +- 浏览器访问地址使用 Nginx 的同源地址,例如 `http://localhost:8080`,不要写 `yudao-server`、`127.0.0.1:48080` 等容器名或后端端口
  51 +- API 路径为 `/admin-api`:`yudao-ui-admin-vue3` 为 `.env.prod` 的 `VITE_BASE_URL` + `VITE_API_URL`;`yudao-ui-admin-vben` 为 `apps/web-*/.env.production` 的 `VITE_BASE_URL`、`VITE_GLOB_API_URL`
  52 +- 前端 `VITE_APP_CAPTCHA_ENABLE` 与 `.env` 中的 `YUDAO_CAPTCHA_ENABLE` 一致
  53 +
  54 +将打包产物目录中的内容(包含 `index.html`)复制到 `script/docker-compose/web/dist/`,在**源码根目录**执行:
  55 +
  56 +```shell
  57 +mkdir -p script/docker-compose/web/dist
  58 +cp -R /path/to/前端打包产物目录/. script/docker-compose/web/dist/
  59 +```
  60 +
  61 +例如 `yudao-ui-admin-vue3` 执行 `pnpm build:prod` 后为 `dist-prod`;`yudao-ui-admin-vben` 执行 `pnpm build:antd` 后为 `apps/web-antd/dist`。
  62 +
  63 +## 3. 配置环境变量
  64 +
  65 +```shell
  66 +cd script/docker-compose
  67 +cp .env.example .env
  68 +```
  69 +
  70 +按需修改 `.env`,至少替换 `MYSQL_ROOT_PASSWORD`、`MYSQL_PASSWORD`、`REDIS_PASSWORD` 三个示例密码。
  71 +
  72 +| 变量 | 默认值 | 说明 |
  73 +| --- | --- | --- |
  74 +| `WEB_PORT` | `8080` | 前端访问端口 |
  75 +| `IMAGE_TAG` | `local` | 后端镜像 tag |
  76 +| `MYSQL_DATABASE` | `ruoyi-vue-pro` | 数据库名 |
  77 +| `MYSQL_ROOT_PASSWORD` | 示例值 | MySQL root 密码,仅供初始化与运维使用 |
  78 +| `MYSQL_USER` / `MYSQL_PASSWORD` | `yudao` / 示例值 | 应用使用的账号,只拥有 `MYSQL_DATABASE` 库权限 |
  79 +| `REDIS_PASSWORD` | 示例值 | Redis 密码 |
  80 +| `SPRING_PROFILES_ACTIVE` | `dev` | 后端 profile |
  81 +| `JAVA_OPTS` | `-Xms512m -Xmx512m ...` | JVM 参数 |
  82 +| `YUDAO_CAPTCHA_ENABLE` | `true` | 是否开启登录验证码 |
  83 +
  84 +后端的数据库(主库 `master`、从库 `slave`)、Redis 连接,由 `docker-compose.yml` 通过环境变量覆盖 `application-dev.yaml` 中的 `127.0.0.1` 等地址;其余配置仍使用 `application.yaml`、`application-dev.yaml`。
  85 +
  86 +## 4. 构建并启动
  87 +
  88 +以下命令均在 `script/docker-compose` 目录执行:
  89 +
  90 +```shell
  91 +# 检查配置(变量缺失会直接报错)
  92 +docker compose config
  93 +
  94 +# 构建后端镜像并启动
  95 +docker compose up -d --build
  96 +
  97 +# 查看状态与日志
  98 +docker compose ps
  99 +docker compose logs -f yudao-server
  100 +```
  101 +
  102 +首次启动时 MySQL 需要导入 SQL,`yudao-server` 会等到 MySQL、Redis 健康检查通过后再启动。日志出现 `Started YudaoServerApplication` 后访问:
  103 +
  104 +- 管理后台:http://localhost:8080 (`WEB_PORT` 修改后对应调整)
  105 +
  106 +## 5. 更新
  107 +
  108 +```shell
  109 +# 后端:回到源码根目录重新打包,再回到本目录重建、重启
  110 +cd ../..
  111 +mvn clean package -pl yudao-server -am -Dmaven.test.skip=true
  112 +cd script/docker-compose
  113 +docker compose up -d --build yudao-server
  114 +
  115 +# 前端:清空 web/dist/ 内的文件(保留 dist 目录本身)后复制新产物,再重启 web;修改 nginx/default.conf 后同样执行
  116 +rm -rf web/dist/*
  117 +cp -R /path/to/前端打包产物目录/. web/dist/
  118 +docker compose restart web
  119 +```
  120 +
  121 +如需回滚,可在打包前修改 `.env` 的 `IMAGE_TAG`,保留旧 tag 的镜像。
  122 +
  123 +## 6. 停止与数据
  124 +
  125 +```shell
  126 +# 停止并删除容器,保留数据卷
  127 +docker compose down
  128 +```
  129 +
  130 +**不要执行 `docker compose down -v`**,它会删除 `yudao-boot_mysql-data`、`yudao-boot_redis-data` 数据卷,数据库内容将全部丢失。
  131 +
  132 +## 数据库初始化说明
  133 +
  134 +- SQL 只在 `mysql-data` 数据卷为空(首次启动)时执行一次;之后修改 SQL 文件、`.env` 中的 `MYSQL_*` 账号密码,都不会作用于已有数据库。
  135 +- 首次导入中途失败(例如容器被强制停止),数据卷会处于半初始化状态,需要确认数据可丢弃后执行 `docker compose down`、`docker volume rm yudao-boot_mysql-data` 再重新启动。
  136 +- 已有数据卷升级到新版本时,SQL 不会自动执行。请先备份,再手动执行对应的升级 SQL,例如:
  137 +
  138 +```shell
  139 +docker compose exec -T mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD" "$MYSQL_DATABASE"' < /path/to/upgrade.sql
  140 +```
  141 +
  142 +- 使用外部 MySQL 时:自行导入 `sql/mysql/ruoyi-vue-pro.sql`、`sql/mysql/quartz.sql`,删除 `docker-compose.yml` 中的 `mysql` 服务及 `yudao-server` 对它的 `depends_on`,并把 `SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_*`、`SLAVE_*` 改为外部地址;容器内的 `127.0.0.1` 指向容器自身,不是宿主机。
  143 +
  144 +## 其他分支同步替换点
  145 +
  146 +本目录按 JDK 17 + Spring Boot 3.x 分支编写。同步到其他分支时,只需替换:
  147 +
  148 +| 分支 | 后端 Dockerfile 基础镜像 | Redis 环境变量前缀 |
  149 +| --- | --- | --- |
  150 +| JDK 8 + Spring Boot 2.x | `eclipse-temurin:8-jre` | `SPRING_REDIS_*`(`spring.redis.*`) |
  151 +| JDK 17 + Spring Boot 3.x | `eclipse-temurin:17-jre` | `SPRING_DATA_REDIS_*`(`spring.data.redis.*`) |
  152 +| JDK 25 + Spring Boot 4.x | `eclipse-temurin:25-jre` | `SPRING_DATA_REDIS_*`(`spring.data.redis.*`) |
  153 +
  154 +并核对该分支 `yudao-server/src/main/resources/application-*.yaml` 的数据源、Redis 配置项与 `sql/mysql` 下的 SQL 文件名。
script/docker-compose/docker-compose.yml 0 → 100644
  1 +# 芋道 Boot 单体版 Docker Compose 入门部署:yudao-server + 前端 Nginx + MySQL + Redis
  2 +# 使用说明见同目录 README.md;需 Docker Compose V2.20.2 及以上(docker compose 命令)
  3 +# 本文件中的相对路径,均相对于本文件所在目录,与执行命令时的当前目录无关
  4 +
  5 +name: yudao-boot
  6 +
  7 +services:
  8 + mysql:
  9 + image: mysql:8.4
  10 + restart: unless-stopped
  11 + command:
  12 + - --character-set-server=utf8mb4
  13 + - --collation-server=utf8mb4_unicode_ci
  14 + environment:
  15 + TZ: Asia/Shanghai
  16 + MYSQL_DATABASE: ${MYSQL_DATABASE:-ruoyi-vue-pro}
  17 + MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:?请在 .env 中设置 MYSQL_ROOT_PASSWORD}
  18 + MYSQL_USER: ${MYSQL_USER:-yudao}
  19 + MYSQL_PASSWORD: ${MYSQL_PASSWORD:?请在 .env 中设置 MYSQL_PASSWORD}
  20 + volumes:
  21 + - mysql-data:/var/lib/mysql
  22 + # 仅在 mysql-data 卷为空(首次启动)时,按文件名顺序执行;SQL 文件不存在时直接报错,避免被创建成空目录
  23 + - type: bind
  24 + source: ../../sql/mysql/ruoyi-vue-pro.sql
  25 + target: /docker-entrypoint-initdb.d/01-ruoyi-vue-pro.sql
  26 + read_only: true
  27 + bind:
  28 + create_host_path: false
  29 + - type: bind
  30 + source: ../../sql/mysql/quartz.sql
  31 + target: /docker-entrypoint-initdb.d/02-quartz.sql
  32 + read_only: true
  33 + bind:
  34 + create_host_path: false
  35 + # 默认不对宿主机开放;需要本机客户端连接时,取消注释(避免与本机已有 3306 冲突)
  36 + # ports:
  37 + # - "127.0.0.1:13306:3306"
  38 + healthcheck:
  39 + # 首次初始化时 MySQL 临时实例不监听 TCP,因此 127.0.0.1 可连通即表示初始化完成
  40 + test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -u root -p\"$$MYSQL_ROOT_PASSWORD\" --silent"]
  41 + interval: 10s
  42 + timeout: 5s
  43 + retries: 30
  44 + start_period: 60s
  45 +
  46 + redis:
  47 + image: redis:7.4-alpine
  48 + restart: unless-stopped
  49 + command: ["redis-server", "--appendonly", "yes", "--requirepass", "${REDIS_PASSWORD:?请在 .env 中设置 REDIS_PASSWORD}"]
  50 + environment:
  51 + REDISCLI_AUTH: ${REDIS_PASSWORD}
  52 + volumes:
  53 + - redis-data:/data
  54 + # 默认不对宿主机开放;需要时取消注释(避免与本机已有 6379 冲突)
  55 + # ports:
  56 + # - "127.0.0.1:16379:6379"
  57 + healthcheck:
  58 + test: ["CMD", "redis-cli", "ping"]
  59 + interval: 10s
  60 + timeout: 5s
  61 + retries: 10
  62 +
  63 + yudao-server:
  64 + # 使用模块自带的 Dockerfile,需先在源码根目录执行 mvn 打包,生成 yudao-server/target/yudao-server.jar
  65 + build:
  66 + context: ../../yudao-server
  67 + image: yudao-server:${IMAGE_TAG:-local}
  68 + restart: unless-stopped
  69 + environment:
  70 + SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE:-dev}
  71 + JAVA_OPTS: ${JAVA_OPTS:--Xms512m -Xmx512m -Djava.security.egd=file:/dev/./urandom}
  72 + # 数据库:主库、从库都要覆盖,否则会使用 application-${SPRING_PROFILES_ACTIVE}.yaml 中的 127.0.0.1
  73 + SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_URL: jdbc:mysql://mysql:3306/${MYSQL_DATABASE:-ruoyi-vue-pro}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true
  74 + SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_USERNAME: ${MYSQL_USER:-yudao}
  75 + SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_PASSWORD: ${MYSQL_PASSWORD}
  76 + SPRING_DATASOURCE_DYNAMIC_DATASOURCE_SLAVE_URL: jdbc:mysql://mysql:3306/${MYSQL_DATABASE:-ruoyi-vue-pro}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true
  77 + SPRING_DATASOURCE_DYNAMIC_DATASOURCE_SLAVE_USERNAME: ${MYSQL_USER:-yudao}
  78 + SPRING_DATASOURCE_DYNAMIC_DATASOURCE_SLAVE_PASSWORD: ${MYSQL_PASSWORD}
  79 + # Redis:Spring Boot 3.x 使用 spring.data.redis.*
  80 + SPRING_DATA_REDIS_HOST: redis
  81 + SPRING_DATA_REDIS_PORT: 6379
  82 + SPRING_DATA_REDIS_PASSWORD: ${REDIS_PASSWORD}
  83 + # 需与前端打包时的 VITE_APP_CAPTCHA_ENABLE 一致
  84 + YUDAO_CAPTCHA_ENABLE: ${YUDAO_CAPTCHA_ENABLE:-true}
  85 + YUDAO_DEMO: "false"
  86 + depends_on:
  87 + mysql:
  88 + condition: service_healthy
  89 + redis:
  90 + condition: service_healthy
  91 + # 默认只通过 web 的 Nginx 访问;需要直连后端排查时,取消注释
  92 + # ports:
  93 + # - "127.0.0.1:48080:48080"
  94 +
  95 + web:
  96 + image: nginx:1.28-alpine
  97 + restart: unless-stopped
  98 + ports:
  99 + - "${WEB_PORT:-8080}:80"
  100 + volumes:
  101 + # 前端打包产物(包含 index.html 的目录内容)复制到 ./web/dist
  102 + - type: bind
  103 + source: ./web/dist
  104 + target: /usr/share/nginx/html
  105 + read_only: true
  106 + bind:
  107 + create_host_path: false
  108 + - ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
  109 + depends_on:
  110 + - yudao-server
  111 +
  112 +volumes:
  113 + mysql-data:
  114 + redis-data:
script/docker-compose/nginx/default.conf 0 → 100644
  1 +# 前端静态资源 + 同源反向代理到 yudao-server
  2 +# 浏览器只访问本 Nginx,前端 API 地址使用同源路径 /admin-api,不要写容器名
  3 +
  4 +map $http_upgrade $connection_upgrade {
  5 + default upgrade;
  6 + '' close;
  7 +}
  8 +
  9 +server {
  10 + listen 80;
  11 + server_name _;
  12 +
  13 + root /usr/share/nginx/html;
  14 + index index.html;
  15 +
  16 + # 与后端 spring.servlet.multipart.max-request-size 保持一致
  17 + client_max_body_size 32m;
  18 +
  19 + gzip on;
  20 + gzip_min_length 1k;
  21 + gzip_comp_level 5;
  22 + gzip_types text/plain text/css application/javascript application/json application/xml image/svg+xml;
  23 + gzip_vary on;
  24 +
  25 + # 使用 Docker 内置 DNS 动态解析服务名,后端容器重建后无需重启 Nginx
  26 + resolver 127.0.0.11 valid=10s ipv6=off;
  27 + set $yudao_backend http://yudao-server:48080;
  28 +
  29 + # 前端路由(history 模式)回退到 index.html
  30 + location / {
  31 + try_files $uri $uri/ /index.html;
  32 + }
  33 +
  34 + location = /index.html {
  35 + add_header Cache-Control "no-cache";
  36 + }
  37 +
  38 + # 管理后台 API、用户 App API
  39 + location ~ ^/(admin-api|app-api)/ {
  40 + proxy_pass $yudao_backend;
  41 + proxy_http_version 1.1;
  42 + proxy_set_header Host $http_host;
  43 + proxy_set_header X-Real-IP $remote_addr;
  44 + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  45 + proxy_set_header X-Forwarded-Proto $scheme;
  46 + proxy_set_header Connection "";
  47 + # 流式响应(SSE)不缓冲
  48 + proxy_buffering off;
  49 + proxy_read_timeout 300s;
  50 + }
  51 +
  52 + # WebSocket
  53 + location /infra/ws {
  54 + proxy_pass $yudao_backend;
  55 + proxy_http_version 1.1;
  56 + proxy_set_header Host $http_host;
  57 + proxy_set_header X-Real-IP $remote_addr;
  58 + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  59 + proxy_set_header X-Forwarded-Proto $scheme;
  60 + proxy_set_header Upgrade $http_upgrade;
  61 + proxy_set_header Connection $connection_upgrade;
  62 + proxy_read_timeout 3600s;
  63 + }
  64 +}
script/docker/Docker-HOWTO.md deleted
1 -# Docker Build & Up  
2 -  
3 -目标: 快速部署体验系统,帮助了解系统之间的依赖关系。  
4 -依赖:docker compose v2,删除`name: yudao-system`,降低`version`版本为`3.3`以下,支持`docker-compose`。  
5 -  
6 -## 功能文件列表  
7 -  
8 -```text  
9 -.  
10 -├── Docker-HOWTO.md  
11 -├── docker-compose.yml  
12 -├── docker.env <-- 提供docker-compose环境变量配置  
13 -├── yudao-server  
14 -│ └── Dockerfile  
15 -└── yudao-ui-admin  
16 - ├── .dockerignore  
17 - ├── Dockerfile  
18 - └── nginx.conf <-- 提供基础配置,gzip压缩、api转发  
19 -```  
20 -  
21 -## 构建 jar 包  
22 -  
23 -```shell  
24 -# 创建maven缓存volume  
25 -docker volume create --name yudao-maven-repo  
26 -  
27 -docker run -it --rm --name yudao-maven \  
28 - -v yudao-maven-repo:/root/.m2 \  
29 - -v $PWD:/usr/src/mymaven \  
30 - -w /usr/src/mymaven \  
31 - maven mvn clean install package '-Dmaven.test.skip=true'  
32 -```  
33 -  
34 -## 构建启动服务  
35 -  
36 -```shell  
37 -docker compose --env-file docker.env up -d  
38 -```  
39 -  
40 -首次运行会自动构建容器。可以通过`docker compose build [service]`来手动构建所有或某个docker镜像  
41 -  
42 -`--env-file docker.env`为可选参数,只是展示了通过`.env`文件配置容器启动的环境变量,`docker-compose.yml`本身已经提供足够的默认参数来正常运行系统。  
43 -  
44 -## 服务器的宿主机端口映射  
45 -  
46 -- admin ui: http://localhost:8080  
47 -- api server: http://localhost:48080  
48 -- mysql: root/123456, port: 3306  
49 -- redis: port: 6379  
script/docker/docker-compose.yml deleted
1 -version: "3.4"  
2 -  
3 -name: yudao-system  
4 -  
5 -services:  
6 - mysql:  
7 - container_name: yudao-mysql  
8 - image: mysql:8  
9 - restart: unless-stopped  
10 - tty: true  
11 - ports:  
12 - - "3306:3306"  
13 - environment:  
14 - MYSQL_DATABASE: ${MYSQL_DATABASE:-ruoyi-vue-pro}  
15 - MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-123456}  
16 - volumes:  
17 - - mysql:/var/lib/mysql/  
18 - - ./sql/mysql/ruoyi-vue-pro.sql:/docker-entrypoint-initdb.d/ruoyi-vue-pro.sql:ro  
19 -  
20 - redis:  
21 - container_name: yudao-redis  
22 - image: redis:6-alpine  
23 - restart: unless-stopped  
24 - ports:  
25 - - "6379:6379"  
26 - volumes:  
27 - - redis:/data  
28 -  
29 - server:  
30 - container_name: yudao-server  
31 - build:  
32 - context: ./yudao-server/  
33 - image: yudao-server  
34 - restart: unless-stopped  
35 - ports:  
36 - - "48080:48080"  
37 - environment:  
38 - # https://github.com/polovyivan/docker-pass-configs-to-container  
39 - SPRING_PROFILES_ACTIVE: local  
40 - JAVA_OPTS:  
41 - ${JAVA_OPTS:-  
42 - -Xms512m  
43 - -Xmx512m  
44 - -Djava.security.egd=file:/dev/./urandom  
45 - }  
46 - ARGS:  
47 - --spring.datasource.dynamic.datasource.master.url=${MASTER_DATASOURCE_URL:-jdbc:mysql://yudao-mysql:3306/ruoyi-vue-pro?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true}  
48 - --spring.datasource.dynamic.datasource.master.username=${MASTER_DATASOURCE_USERNAME:-root}  
49 - --spring.datasource.dynamic.datasource.master.password=${MASTER_DATASOURCE_PASSWORD:-123456}  
50 - --spring.datasource.dynamic.datasource.slave.url=${SLAVE_DATASOURCE_URL:-jdbc:mysql://yudao-mysql:3306/ruoyi-vue-pro?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true}  
51 - --spring.datasource.dynamic.datasource.slave.username=${SLAVE_DATASOURCE_USERNAME:-root}  
52 - --spring.datasource.dynamic.datasource.slave.password=${SLAVE_DATASOURCE_PASSWORD:-123456}  
53 - --spring.data.redis.host=${REDIS_HOST:-yudao-redis}  
54 - depends_on:  
55 - - mysql  
56 - - redis  
57 -  
58 - admin:  
59 - container_name: yudao-admin  
60 - build:  
61 - context: ./yudao-ui-admin  
62 - args:  
63 - NODE_ENV:  
64 - ENV=${NODE_ENV:-production}  
65 - PUBLIC_PATH=${PUBLIC_PATH:-/}  
66 - VUE_APP_TITLE=${VUE_APP_TITLE:-芋道管理系统}  
67 - VUE_APP_BASE_API=${VUE_APP_BASE_API:-/prod-api}  
68 - VUE_APP_APP_NAME=${VUE_APP_APP_NAME:-/}  
69 - VUE_APP_TENANT_ENABLE=${VUE_APP_TENANT_ENABLE:-true}  
70 - VUE_APP_CAPTCHA_ENABLE=${VUE_APP_CAPTCHA_ENABLE:-true}  
71 - VUE_APP_DOC_ENABLE=${VUE_APP_DOC_ENABLE:-true}  
72 - VUE_APP_BAIDU_CODE=${VUE_APP_BAIDU_CODE:-fadc1bd5db1a1d6f581df60a1807f8ab}  
73 - image: yudao-admin  
74 - restart: unless-stopped  
75 - ports:  
76 - - "8080:80"  
77 - depends_on:  
78 - - server  
79 -  
80 -volumes:  
81 - mysql:  
82 - driver: local  
83 - redis:  
84 - driver: local  
script/docker/docker.env deleted
1 -## mysql  
2 -MYSQL_DATABASE=ruoyi-vue-pro  
3 -MYSQL_ROOT_PASSWORD=123456  
4 -  
5 -## server  
6 -JAVA_OPTS=-Xms512m -Xmx512m -Djava.security.egd=file:/dev/./urandom  
7 -  
8 -MASTER_DATASOURCE_URL=jdbc:mysql://yudao-mysql:3306/${MYSQL_DATABASE}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true  
9 -MASTER_DATASOURCE_USERNAME=root  
10 -MASTER_DATASOURCE_PASSWORD=${MYSQL_ROOT_PASSWORD}  
11 -SLAVE_DATASOURCE_URL=${MASTER_DATASOURCE_URL}  
12 -SLAVE_DATASOURCE_USERNAME=${MASTER_DATASOURCE_USERNAME}  
13 -SLAVE_DATASOURCE_PASSWORD=${MASTER_DATASOURCE_PASSWORD}  
14 -REDIS_HOST=yudao-redis  
15 -  
16 -## admin  
17 -NODE_ENV=production  
18 -PUBLIC_PATH=/  
19 -VUE_APP_TITLE=芋道管理系统  
20 -VUE_APP_BASE_API=/prod-api  
21 -VUE_APP_APP_NAME=/  
22 -VUE_APP_TENANT_ENABLE=true  
23 -VUE_APP_CAPTCHA_ENABLE=true  
24 -VUE_APP_DOC_ENABLE=true  
25 -VUE_APP_BAIDU_CODE=fadc1bd5db1a1d6f581df60a1807f8ab