From ee2cfb9c0db030257d2737b54b2df4f8491571a6 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sun, 25 Oct 2026 00:12:28 +0800 Subject: [PATCH] feat(deploy): 更新 Docker Compose 部署配置 --- script/docker-compose/.env.example | 23 +++++++++++++++++++++++ script/docker-compose/.gitignore | 2 ++ script/docker-compose/README.md | 154 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ script/docker-compose/docker-compose.yml | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ script/docker-compose/nginx/default.conf | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ script/docker/Docker-HOWTO.md | 49 ------------------------------------------------- script/docker/docker-compose.yml | 84 ------------------------------------------------------------------------------------ script/docker/docker.env | 25 ------------------------- 8 files changed, 357 insertions(+), 158 deletions(-) create mode 100644 script/docker-compose/.env.example create mode 100644 script/docker-compose/.gitignore create mode 100644 script/docker-compose/README.md create mode 100644 script/docker-compose/docker-compose.yml create mode 100644 script/docker-compose/nginx/default.conf delete mode 100644 script/docker/Docker-HOWTO.md delete mode 100644 script/docker/docker-compose.yml delete mode 100644 script/docker/docker.env diff --git a/script/docker-compose/.env.example b/script/docker-compose/.env.example new file mode 100644 index 0000000..738a8c1 --- /dev/null +++ b/script/docker-compose/.env.example @@ -0,0 +1,23 @@ +# 复制为 .env 后修改:cp .env.example .env +# 以下密码仅为示例,部署前请替换;.env 已被 .gitignore 忽略,不要提交 + +## 前端 Nginx 对宿主机开放的端口 +WEB_PORT=8080 + +## 后端镜像 tag(每次重新打包后可修改,便于回滚) +IMAGE_TAG=local + +## MySQL(首次初始化时生效,已有数据卷后修改不会改变库内账号密码) +MYSQL_DATABASE=ruoyi-vue-pro +MYSQL_ROOT_PASSWORD=Root@ChangeMe2026 +MYSQL_USER=yudao +MYSQL_PASSWORD=Yudao@ChangeMe2026 + +## Redis +REDIS_PASSWORD=Redis@ChangeMe2026 + +## 后端应用 +SPRING_PROFILES_ACTIVE=dev +JAVA_OPTS=-Xms512m -Xmx512m -Djava.security.egd=file:/dev/./urandom +# 需与前端打包时的 VITE_APP_CAPTCHA_ENABLE 一致 +YUDAO_CAPTCHA_ENABLE=true diff --git a/script/docker-compose/.gitignore b/script/docker-compose/.gitignore new file mode 100644 index 0000000..6a5ea77 --- /dev/null +++ b/script/docker-compose/.gitignore @@ -0,0 +1,2 @@ +.env +web/dist/ diff --git a/script/docker-compose/README.md b/script/docker-compose/README.md new file mode 100644 index 0000000..9e13689 --- /dev/null +++ b/script/docker-compose/README.md @@ -0,0 +1,154 @@ +# Docker Compose 部署(单体版) + +目标:用 Docker Compose V2 快速搭建一套可登录的体验环境,了解各组件之间的依赖关系。 + +包含:`yudao-server` 后端、前端 Nginx、MySQL、Redis。仅用于入门体验与测试,不是生产高可用方案。 + +## 文件列表 + +```text +script/docker-compose +├── README.md +├── docker-compose.yml <-- 编排文件,相对路径均相对于本目录 +├── .env.example <-- 环境变量示例,复制为 .env 后修改 +├── .gitignore <-- 忽略 .env、web/dist/ +├── nginx +│ └── default.conf <-- 静态资源、history 回退、/admin-api、/app-api、/infra/ws 反向代理 +└── web + └── dist <-- 需自行放入前端打包产物(不随仓库提供) +``` + +| 服务 | 镜像 | 说明 | +| --- | --- | --- | +| `mysql` | `mysql:8.4` | 首次启动导入 `sql/mysql/ruoyi-vue-pro.sql`、`sql/mysql/quartz.sql`,数据卷 `yudao-boot_mysql-data` | +| `redis` | `redis:7.4-alpine` | 开启密码与 AOF,数据卷 `yudao-boot_redis-data` | +| `yudao-server` | `yudao-server:${IMAGE_TAG}` | 由 `yudao-server/Dockerfile` 构建,端口 48080,只在 Compose 网络内访问 | +| `web` | `nginx:1.28-alpine` | 对宿主机开放 `${WEB_PORT}`(默认 8080) | + +容器之间通过服务名(`mysql`、`redis`、`yudao-server`)访问。MySQL、Redis、后端默认不映射到宿主机,不会与本机已有的 3306、6379、48080 冲突;需要时取消 `docker-compose.yml` 中对应 `ports` 的注释。 + +## 前置条件 + +- Docker Engine + Docker Compose V2.20.2 及以上(`docker compose version` 可查看) +- JDK 17、Maven(与源码根 `pom.xml` 的 `java.version` 一致) +- 已按前端项目的部署说明完成打包 + +## 1. 打包后端 + +在**源码根目录**执行: + +```shell +mvn clean package -pl yudao-server -am -Dmaven.test.skip=true +``` + +产物为 `yudao-server/target/yudao-server.jar`,`docker compose build` 时由 `yudao-server/Dockerfile` 复制进镜像。 + +## 2. 准备前端产物 + +前端是独立仓库,这里不构建前端源码。打包前确认前端生产环境配置: + +- 浏览器访问地址使用 Nginx 的同源地址,例如 `http://localhost:8080`,不要写 `yudao-server`、`127.0.0.1:48080` 等容器名或后端端口 +- 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` +- 前端 `VITE_APP_CAPTCHA_ENABLE` 与 `.env` 中的 `YUDAO_CAPTCHA_ENABLE` 一致 + +将打包产物目录中的内容(包含 `index.html`)复制到 `script/docker-compose/web/dist/`,在**源码根目录**执行: + +```shell +mkdir -p script/docker-compose/web/dist +cp -R /path/to/前端打包产物目录/. script/docker-compose/web/dist/ +``` + +例如 `yudao-ui-admin-vue3` 执行 `pnpm build:prod` 后为 `dist-prod`;`yudao-ui-admin-vben` 执行 `pnpm build:antd` 后为 `apps/web-antd/dist`。 + +## 3. 配置环境变量 + +```shell +cd script/docker-compose +cp .env.example .env +``` + +按需修改 `.env`,至少替换 `MYSQL_ROOT_PASSWORD`、`MYSQL_PASSWORD`、`REDIS_PASSWORD` 三个示例密码。 + +| 变量 | 默认值 | 说明 | +| --- | --- | --- | +| `WEB_PORT` | `8080` | 前端访问端口 | +| `IMAGE_TAG` | `local` | 后端镜像 tag | +| `MYSQL_DATABASE` | `ruoyi-vue-pro` | 数据库名 | +| `MYSQL_ROOT_PASSWORD` | 示例值 | MySQL root 密码,仅供初始化与运维使用 | +| `MYSQL_USER` / `MYSQL_PASSWORD` | `yudao` / 示例值 | 应用使用的账号,只拥有 `MYSQL_DATABASE` 库权限 | +| `REDIS_PASSWORD` | 示例值 | Redis 密码 | +| `SPRING_PROFILES_ACTIVE` | `dev` | 后端 profile | +| `JAVA_OPTS` | `-Xms512m -Xmx512m ...` | JVM 参数 | +| `YUDAO_CAPTCHA_ENABLE` | `true` | 是否开启登录验证码 | + +后端的数据库(主库 `master`、从库 `slave`)、Redis 连接,由 `docker-compose.yml` 通过环境变量覆盖 `application-dev.yaml` 中的 `127.0.0.1` 等地址;其余配置仍使用 `application.yaml`、`application-dev.yaml`。 + +## 4. 构建并启动 + +以下命令均在 `script/docker-compose` 目录执行: + +```shell +# 检查配置(变量缺失会直接报错) +docker compose config + +# 构建后端镜像并启动 +docker compose up -d --build + +# 查看状态与日志 +docker compose ps +docker compose logs -f yudao-server +``` + +首次启动时 MySQL 需要导入 SQL,`yudao-server` 会等到 MySQL、Redis 健康检查通过后再启动。日志出现 `Started YudaoServerApplication` 后访问: + +- 管理后台:http://localhost:8080 (`WEB_PORT` 修改后对应调整) + +## 5. 更新 + +```shell +# 后端:回到源码根目录重新打包,再回到本目录重建、重启 +cd ../.. +mvn clean package -pl yudao-server -am -Dmaven.test.skip=true +cd script/docker-compose +docker compose up -d --build yudao-server + +# 前端:清空 web/dist/ 内的文件(保留 dist 目录本身)后复制新产物,再重启 web;修改 nginx/default.conf 后同样执行 +rm -rf web/dist/* +cp -R /path/to/前端打包产物目录/. web/dist/ +docker compose restart web +``` + +如需回滚,可在打包前修改 `.env` 的 `IMAGE_TAG`,保留旧 tag 的镜像。 + +## 6. 停止与数据 + +```shell +# 停止并删除容器,保留数据卷 +docker compose down +``` + +**不要执行 `docker compose down -v`**,它会删除 `yudao-boot_mysql-data`、`yudao-boot_redis-data` 数据卷,数据库内容将全部丢失。 + +## 数据库初始化说明 + +- SQL 只在 `mysql-data` 数据卷为空(首次启动)时执行一次;之后修改 SQL 文件、`.env` 中的 `MYSQL_*` 账号密码,都不会作用于已有数据库。 +- 首次导入中途失败(例如容器被强制停止),数据卷会处于半初始化状态,需要确认数据可丢弃后执行 `docker compose down`、`docker volume rm yudao-boot_mysql-data` 再重新启动。 +- 已有数据卷升级到新版本时,SQL 不会自动执行。请先备份,再手动执行对应的升级 SQL,例如: + +```shell +docker compose exec -T mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD" "$MYSQL_DATABASE"' < /path/to/upgrade.sql +``` + +- 使用外部 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` 指向容器自身,不是宿主机。 + +## 其他分支同步替换点 + +本目录按 JDK 17 + Spring Boot 3.x 分支编写。同步到其他分支时,只需替换: + +| 分支 | 后端 Dockerfile 基础镜像 | Redis 环境变量前缀 | +| --- | --- | --- | +| JDK 8 + Spring Boot 2.x | `eclipse-temurin:8-jre` | `SPRING_REDIS_*`(`spring.redis.*`) | +| JDK 17 + Spring Boot 3.x | `eclipse-temurin:17-jre` | `SPRING_DATA_REDIS_*`(`spring.data.redis.*`) | +| JDK 25 + Spring Boot 4.x | `eclipse-temurin:25-jre` | `SPRING_DATA_REDIS_*`(`spring.data.redis.*`) | + +并核对该分支 `yudao-server/src/main/resources/application-*.yaml` 的数据源、Redis 配置项与 `sql/mysql` 下的 SQL 文件名。 diff --git a/script/docker-compose/docker-compose.yml b/script/docker-compose/docker-compose.yml new file mode 100644 index 0000000..bc28f96 --- /dev/null +++ b/script/docker-compose/docker-compose.yml @@ -0,0 +1,114 @@ +# 芋道 Boot 单体版 Docker Compose 入门部署:yudao-server + 前端 Nginx + MySQL + Redis +# 使用说明见同目录 README.md;需 Docker Compose V2.20.2 及以上(docker compose 命令) +# 本文件中的相对路径,均相对于本文件所在目录,与执行命令时的当前目录无关 + +name: yudao-boot + +services: + mysql: + image: mysql:8.4 + restart: unless-stopped + command: + - --character-set-server=utf8mb4 + - --collation-server=utf8mb4_unicode_ci + environment: + TZ: Asia/Shanghai + MYSQL_DATABASE: ${MYSQL_DATABASE:-ruoyi-vue-pro} + MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:?请在 .env 中设置 MYSQL_ROOT_PASSWORD} + MYSQL_USER: ${MYSQL_USER:-yudao} + MYSQL_PASSWORD: ${MYSQL_PASSWORD:?请在 .env 中设置 MYSQL_PASSWORD} + volumes: + - mysql-data:/var/lib/mysql + # 仅在 mysql-data 卷为空(首次启动)时,按文件名顺序执行;SQL 文件不存在时直接报错,避免被创建成空目录 + - type: bind + source: ../../sql/mysql/ruoyi-vue-pro.sql + target: /docker-entrypoint-initdb.d/01-ruoyi-vue-pro.sql + read_only: true + bind: + create_host_path: false + - type: bind + source: ../../sql/mysql/quartz.sql + target: /docker-entrypoint-initdb.d/02-quartz.sql + read_only: true + bind: + create_host_path: false + # 默认不对宿主机开放;需要本机客户端连接时,取消注释(避免与本机已有 3306 冲突) + # ports: + # - "127.0.0.1:13306:3306" + healthcheck: + # 首次初始化时 MySQL 临时实例不监听 TCP,因此 127.0.0.1 可连通即表示初始化完成 + test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -u root -p\"$$MYSQL_ROOT_PASSWORD\" --silent"] + interval: 10s + timeout: 5s + retries: 30 + start_period: 60s + + redis: + image: redis:7.4-alpine + restart: unless-stopped + command: ["redis-server", "--appendonly", "yes", "--requirepass", "${REDIS_PASSWORD:?请在 .env 中设置 REDIS_PASSWORD}"] + environment: + REDISCLI_AUTH: ${REDIS_PASSWORD} + volumes: + - redis-data:/data + # 默认不对宿主机开放;需要时取消注释(避免与本机已有 6379 冲突) + # ports: + # - "127.0.0.1:16379:6379" + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 10s + timeout: 5s + retries: 10 + + yudao-server: + # 使用模块自带的 Dockerfile,需先在源码根目录执行 mvn 打包,生成 yudao-server/target/yudao-server.jar + build: + context: ../../yudao-server + image: yudao-server:${IMAGE_TAG:-local} + restart: unless-stopped + environment: + SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE:-dev} + JAVA_OPTS: ${JAVA_OPTS:--Xms512m -Xmx512m -Djava.security.egd=file:/dev/./urandom} + # 数据库:主库、从库都要覆盖,否则会使用 application-${SPRING_PROFILES_ACTIVE}.yaml 中的 127.0.0.1 + 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 + SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_USERNAME: ${MYSQL_USER:-yudao} + SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_PASSWORD: ${MYSQL_PASSWORD} + 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 + SPRING_DATASOURCE_DYNAMIC_DATASOURCE_SLAVE_USERNAME: ${MYSQL_USER:-yudao} + SPRING_DATASOURCE_DYNAMIC_DATASOURCE_SLAVE_PASSWORD: ${MYSQL_PASSWORD} + # Redis:Spring Boot 3.x 使用 spring.data.redis.* + SPRING_DATA_REDIS_HOST: redis + SPRING_DATA_REDIS_PORT: 6379 + SPRING_DATA_REDIS_PASSWORD: ${REDIS_PASSWORD} + # 需与前端打包时的 VITE_APP_CAPTCHA_ENABLE 一致 + YUDAO_CAPTCHA_ENABLE: ${YUDAO_CAPTCHA_ENABLE:-true} + YUDAO_DEMO: "false" + depends_on: + mysql: + condition: service_healthy + redis: + condition: service_healthy + # 默认只通过 web 的 Nginx 访问;需要直连后端排查时,取消注释 + # ports: + # - "127.0.0.1:48080:48080" + + web: + image: nginx:1.28-alpine + restart: unless-stopped + ports: + - "${WEB_PORT:-8080}:80" + volumes: + # 前端打包产物(包含 index.html 的目录内容)复制到 ./web/dist + - type: bind + source: ./web/dist + target: /usr/share/nginx/html + read_only: true + bind: + create_host_path: false + - ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro + depends_on: + - yudao-server + +volumes: + mysql-data: + redis-data: diff --git a/script/docker-compose/nginx/default.conf b/script/docker-compose/nginx/default.conf new file mode 100644 index 0000000..9df329b --- /dev/null +++ b/script/docker-compose/nginx/default.conf @@ -0,0 +1,64 @@ +# 前端静态资源 + 同源反向代理到 yudao-server +# 浏览器只访问本 Nginx,前端 API 地址使用同源路径 /admin-api,不要写容器名 + +map $http_upgrade $connection_upgrade { + default upgrade; + '' close; +} + +server { + listen 80; + server_name _; + + root /usr/share/nginx/html; + index index.html; + + # 与后端 spring.servlet.multipart.max-request-size 保持一致 + client_max_body_size 32m; + + gzip on; + gzip_min_length 1k; + gzip_comp_level 5; + gzip_types text/plain text/css application/javascript application/json application/xml image/svg+xml; + gzip_vary on; + + # 使用 Docker 内置 DNS 动态解析服务名,后端容器重建后无需重启 Nginx + resolver 127.0.0.11 valid=10s ipv6=off; + set $yudao_backend http://yudao-server:48080; + + # 前端路由(history 模式)回退到 index.html + location / { + try_files $uri $uri/ /index.html; + } + + location = /index.html { + add_header Cache-Control "no-cache"; + } + + # 管理后台 API、用户 App API + location ~ ^/(admin-api|app-api)/ { + proxy_pass $yudao_backend; + proxy_http_version 1.1; + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header Connection ""; + # 流式响应(SSE)不缓冲 + proxy_buffering off; + proxy_read_timeout 300s; + } + + # WebSocket + location /infra/ws { + proxy_pass $yudao_backend; + proxy_http_version 1.1; + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection $connection_upgrade; + proxy_read_timeout 3600s; + } +} diff --git a/script/docker/Docker-HOWTO.md b/script/docker/Docker-HOWTO.md deleted file mode 100644 index 7a62a68..0000000 --- a/script/docker/Docker-HOWTO.md +++ /dev/null @@ -1,49 +0,0 @@ -# Docker Build & Up - -目标: 快速部署体验系统,帮助了解系统之间的依赖关系。 -依赖:docker compose v2,删除`name: yudao-system`,降低`version`版本为`3.3`以下,支持`docker-compose`。 - -## 功能文件列表 - -```text -. -├── Docker-HOWTO.md -├── docker-compose.yml -├── docker.env <-- 提供docker-compose环境变量配置 -├── yudao-server -│ └── Dockerfile -└── yudao-ui-admin - ├── .dockerignore - ├── Dockerfile - └── nginx.conf <-- 提供基础配置,gzip压缩、api转发 -``` - -## 构建 jar 包 - -```shell -# 创建maven缓存volume -docker volume create --name yudao-maven-repo - -docker run -it --rm --name yudao-maven \ - -v yudao-maven-repo:/root/.m2 \ - -v $PWD:/usr/src/mymaven \ - -w /usr/src/mymaven \ - maven mvn clean install package '-Dmaven.test.skip=true' -``` - -## 构建启动服务 - -```shell -docker compose --env-file docker.env up -d -``` - -首次运行会自动构建容器。可以通过`docker compose build [service]`来手动构建所有或某个docker镜像 - -`--env-file docker.env`为可选参数,只是展示了通过`.env`文件配置容器启动的环境变量,`docker-compose.yml`本身已经提供足够的默认参数来正常运行系统。 - -## 服务器的宿主机端口映射 - -- admin ui: http://localhost:8080 -- api server: http://localhost:48080 -- mysql: root/123456, port: 3306 -- redis: port: 6379 diff --git a/script/docker/docker-compose.yml b/script/docker/docker-compose.yml deleted file mode 100644 index ae977dd..0000000 --- a/script/docker/docker-compose.yml +++ /dev/null @@ -1,84 +0,0 @@ -version: "3.4" - -name: yudao-system - -services: - mysql: - container_name: yudao-mysql - image: mysql:8 - restart: unless-stopped - tty: true - ports: - - "3306:3306" - environment: - MYSQL_DATABASE: ${MYSQL_DATABASE:-ruoyi-vue-pro} - MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-123456} - volumes: - - mysql:/var/lib/mysql/ - - ./sql/mysql/ruoyi-vue-pro.sql:/docker-entrypoint-initdb.d/ruoyi-vue-pro.sql:ro - - redis: - container_name: yudao-redis - image: redis:6-alpine - restart: unless-stopped - ports: - - "6379:6379" - volumes: - - redis:/data - - server: - container_name: yudao-server - build: - context: ./yudao-server/ - image: yudao-server - restart: unless-stopped - ports: - - "48080:48080" - environment: - # https://github.com/polovyivan/docker-pass-configs-to-container - SPRING_PROFILES_ACTIVE: local - JAVA_OPTS: - ${JAVA_OPTS:- - -Xms512m - -Xmx512m - -Djava.security.egd=file:/dev/./urandom - } - ARGS: - --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} - --spring.datasource.dynamic.datasource.master.username=${MASTER_DATASOURCE_USERNAME:-root} - --spring.datasource.dynamic.datasource.master.password=${MASTER_DATASOURCE_PASSWORD:-123456} - --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} - --spring.datasource.dynamic.datasource.slave.username=${SLAVE_DATASOURCE_USERNAME:-root} - --spring.datasource.dynamic.datasource.slave.password=${SLAVE_DATASOURCE_PASSWORD:-123456} - --spring.data.redis.host=${REDIS_HOST:-yudao-redis} - depends_on: - - mysql - - redis - - admin: - container_name: yudao-admin - build: - context: ./yudao-ui-admin - args: - NODE_ENV: - ENV=${NODE_ENV:-production} - PUBLIC_PATH=${PUBLIC_PATH:-/} - VUE_APP_TITLE=${VUE_APP_TITLE:-芋道管理系统} - VUE_APP_BASE_API=${VUE_APP_BASE_API:-/prod-api} - VUE_APP_APP_NAME=${VUE_APP_APP_NAME:-/} - VUE_APP_TENANT_ENABLE=${VUE_APP_TENANT_ENABLE:-true} - VUE_APP_CAPTCHA_ENABLE=${VUE_APP_CAPTCHA_ENABLE:-true} - VUE_APP_DOC_ENABLE=${VUE_APP_DOC_ENABLE:-true} - VUE_APP_BAIDU_CODE=${VUE_APP_BAIDU_CODE:-fadc1bd5db1a1d6f581df60a1807f8ab} - image: yudao-admin - restart: unless-stopped - ports: - - "8080:80" - depends_on: - - server - -volumes: - mysql: - driver: local - redis: - driver: local diff --git a/script/docker/docker.env b/script/docker/docker.env deleted file mode 100644 index 0bf6e99..0000000 --- a/script/docker/docker.env +++ /dev/null @@ -1,25 +0,0 @@ -## mysql -MYSQL_DATABASE=ruoyi-vue-pro -MYSQL_ROOT_PASSWORD=123456 - -## server -JAVA_OPTS=-Xms512m -Xmx512m -Djava.security.egd=file:/dev/./urandom - -MASTER_DATASOURCE_URL=jdbc:mysql://yudao-mysql:3306/${MYSQL_DATABASE}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true -MASTER_DATASOURCE_USERNAME=root -MASTER_DATASOURCE_PASSWORD=${MYSQL_ROOT_PASSWORD} -SLAVE_DATASOURCE_URL=${MASTER_DATASOURCE_URL} -SLAVE_DATASOURCE_USERNAME=${MASTER_DATASOURCE_USERNAME} -SLAVE_DATASOURCE_PASSWORD=${MASTER_DATASOURCE_PASSWORD} -REDIS_HOST=yudao-redis - -## admin -NODE_ENV=production -PUBLIC_PATH=/ -VUE_APP_TITLE=芋道管理系统 -VUE_APP_BASE_API=/prod-api -VUE_APP_APP_NAME=/ -VUE_APP_TENANT_ENABLE=true -VUE_APP_CAPTCHA_ENABLE=true -VUE_APP_DOC_ENABLE=true -VUE_APP_BAIDU_CODE=fadc1bd5db1a1d6f581df60a1807f8ab -- libgit2 0.21.4