You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

99 lines
3.3 KiB

# ============================================================
# 缩略图功能验证专用 · 全套自包含部署(172.16.204.61)
# 严禁用于生产!crm-app 以 verify profile 启动(含调试 token 后门接口)。
# 用法见 docs/deploy-verify.md
#
# docker compose up -d --build # 首次:构建 crm-app 镜像 + 拉起四容器
# docker compose down -v # 验证完毕:清理容器 + 数据卷(不留痕)
# ============================================================
services:
mysql:
image: mysql:8.4.8
environment:
MYSQL_ROOT_PASSWORD: verify123
MYSQL_DATABASE: crm # 空库,表结构由 crm-app 的 ddl-auto:update 自动建
TZ: Asia/Shanghai
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
ports:
- "13306:3306" # 对外暴露给本机数据库工具(避开宿主机可能已占用的 3306)
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-pverify123"]
interval: 5s
timeout: 3s
retries: 20
volumes:
- mysql-data:/var/lib/mysql
redis:
image: redis:7-alpine
command: ["redis-server", "--requirepass", "verify123"]
healthcheck:
test: ["CMD", "redis-cli", "-a", "verify123", "ping"]
interval: 5s
timeout: 3s
retries: 20
volumes:
- redis-data:/data
minio:
image: minio/minio:RELEASE.2025-04-08T15-41-24Z
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
ports:
- "9001:9001" # 控制台(可选,浏览器看缩略图对象是否落地)
healthcheck:
test: ["CMD", "mc", "ready", "local"]
interval: 5s
timeout: 3s
retries: 20
volumes:
- minio-data:/data
# 一次性任务:等 minio 就绪后创建 crm bucket(对齐 application.yml 的 crm.file.minio.bucket=crm)
minio-init:
image: minio/mc:latest
depends_on:
minio:
condition: service_healthy
entrypoint: >
/bin/sh -c "
mc alias set local http://minio:9000 minioadmin minioadmin &&
mc mb --ignore-existing local/crm &&
echo 'bucket crm ready';
"
crm-app:
build:
context: .
dockerfile: Dockerfile # 服务器上直接 mvn package + 装 LibreOffice
depends_on:
mysql:
condition: service_healthy
redis:
condition: service_healthy
minio:
condition: service_healthy
environment:
SPRING_PROFILES_ACTIVE: verify
# 中间件指向 compose 服务名(覆盖 application.yml 的默认远程地址)
CRM_DB_URL: "jdbc:mysql://mysql:3306/crm?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&rewriteBatchedStatements=true"
CRM_DB_USERNAME: root
CRM_DB_PASSWORD: verify123
CRM_REDIS_HOST: redis
CRM_REDIS_PORT: "6379"
CRM_REDIS_DATABASE: "0"
CRM_REDIS_PASSWORD: verify123
CRM_MINIO_ENDPOINT: http://minio:9000
CRM_MINIO_AK: minioadmin
CRM_MINIO_SK: minioadmin
# kkFileView 完整预览本次验证用不到,留空(缩略图管线不依赖它)
CRM_KKFILEVIEW_URL: ""
ports:
- "8080:8080"
volumes:
mysql-data:
redis-data:
minio-data: