Files
integral-shop/deploy/docker/step2-single-shop/docker-compose.yml
danaisuiyuan cef4398a5a feat(deploy): configure czleilei240 integral shop
Add czleilei240 runtime profiles, frontend domains, contract paths, and Docker deployment updates so the integral shop can run against the Leilei environment.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-17 19:13:01 +08:00

191 lines
6.4 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# =============================================================
# 步骤二积分商城single-shop-22独立部署
# 客户:池州雷蕾商贸 czleilei240
# 包含服务redis · single-admin-api · single-front-api
# single-admin-web(Vue) · single-h5(uni-app)
#
# 优化要点(参考 step1 寄卖商城经验):
# 1. Redis本地 Alpine+apk 构建,不从 DockerHub 拉取镜像
# 2. Java API不含 Maven 编译JAR bind-mount 自宿主机(快速部署/更新)
# 3. 前端Nginx only 镜像,静态文件 bind-mount更新无需重建镜像
# 4. 日志bind-mount 到宿主机,无需进容器查看
# =============================================================
name: jifenmall-czleilei240
x-common: &common
restart: unless-stopped
environment:
TZ: ${TZ:-Asia/Shanghai}
logging:
driver: json-file
options:
max-size: "20m"
max-file: "5"
x-spring-common: &spring-common
<<: *common
environment:
TZ: ${TZ:-Asia/Shanghai}
MYSQL_HOST: ${RDS_HOST}
MYSQL_DATABASE: ${RDS_DB}
MYSQL_USERNAME: ${RDS_USER}
MYSQL_PASSWORD: ${RDS_PASSWORD}
REDIS_HOST: redis
REDIS_PORT: 6379
REDIS_PASSWORD: ${REDIS_PASSWORD}
SYNC_SOURCE_ID: ${SYNC_SOURCE_ID:-shop_15}
SYNC_TARGET_MER_ID: ${SYNC_TARGET_MER_ID:-15}
networks:
single-net:
driver: bridge
volumes:
single-redis-data:
services:
# ---------- RedisAlpine 本地构建,无需拉取 Docker Hub 镜像) ----------
redis:
<<: *common
build:
context: .
dockerfile: redis.Dockerfile
image: jifenmall-czleilei240/redis:local
container_name: single-redis
command: ["--requirepass", "${REDIS_PASSWORD}", "--appendonly", "yes"]
volumes:
- single-redis-data:/data
networks: [single-net]
healthcheck:
test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD}", "ping"]
interval: 10s
timeout: 3s
retries: 5
# ---------- Front API用户端 Spring Boot ----------
# JAR 文件 bind-mount 自 ${SINGLE_FRONT_JAR}(宿主机 /www/wwwroot/javaapi/miao-front-2.2.jar
# 更新 JARFTP 替换宿主机文件 → docker compose restart single-front-api
single-front-api:
<<: *spring-common
build:
context: .
dockerfile: ../single-shop/front-api.Dockerfile
image: jifenmall-czleilei240/front-api:local
container_name: single-front-api
networks: [single-net]
ports:
- "127.0.0.1:30033:30033"
volumes:
# JAR bind-mountFTP 更新 JAR 后 restart 容器即可
- ${SINGLE_FRONT_JAR}:/app/app.jar:ro
# 图片/PDF 目录:与 step1 H5 Nginx 共享宿主机路径
- ${CRMEB_IMAGE_DIR}:/usr/local/crmeb/crmebimage
# 日志bind-mount 到宿主机,便于直接查看
- ${SINGLE_FRONT_LOG_DIR}:/app/log
# Spring 配置:只读挂入
- ../single-shop/application-docker.yml:/config/application-docker.yml:ro
environment:
TZ: ${TZ:-Asia/Shanghai}
MYSQL_HOST: ${RDS_HOST}
MYSQL_DATABASE: ${RDS_DB}
MYSQL_USERNAME: ${RDS_USER}
MYSQL_PASSWORD: ${RDS_PASSWORD}
REDIS_HOST: redis
REDIS_PORT: 6379
REDIS_PASSWORD: ${REDIS_PASSWORD}
SYNC_SOURCE_ID: ${SYNC_SOURCE_ID:-shop_15}
SYNC_TARGET_MER_ID: ${SYNC_TARGET_MER_ID:-15}
SERVER_PORT: 30033
depends_on:
redis:
condition: service_healthy
healthcheck:
test: ["CMD-SHELL", "curl -sf http://localhost:30033/actuator/health || exit 1"]
interval: 30s
timeout: 10s
retries: 5
start_period: 90s
# ---------- Admin API管理端 Spring Boot ----------
# JAR 文件 bind-mount 自 ${SINGLE_ADMIN_JAR}(宿主机 /www/wwwroot/javaapi/miao-admin-2.2.jar
# 更新 JARFTP 替换宿主机文件 → docker compose restart single-admin-api
single-admin-api:
<<: *spring-common
build:
context: .
dockerfile: ../single-shop/admin-api.Dockerfile
image: jifenmall-czleilei240/admin-api:local
container_name: single-admin-api
networks: [single-net]
ports:
- "127.0.0.1:30032:30032"
volumes:
# JAR bind-mount
- ${SINGLE_ADMIN_JAR}:/app/app.jar:ro
# 图片/PDF 目录
- ${CRMEB_IMAGE_DIR}:/usr/local/crmeb/crmebimage
# 日志 bind-mount
- ${SINGLE_ADMIN_LOG_DIR}:/app/log
# Spring 配置
- ../single-shop/application-docker.yml:/config/application-docker.yml:ro
environment:
TZ: ${TZ:-Asia/Shanghai}
MYSQL_HOST: ${RDS_HOST}
MYSQL_DATABASE: ${RDS_DB}
MYSQL_USERNAME: ${RDS_USER}
MYSQL_PASSWORD: ${RDS_PASSWORD}
REDIS_HOST: redis
REDIS_PORT: 6379
REDIS_PASSWORD: ${REDIS_PASSWORD}
SYNC_SOURCE_ID: ${SYNC_SOURCE_ID:-shop_15}
SYNC_TARGET_MER_ID: ${SYNC_TARGET_MER_ID:-15}
SERVER_PORT: 30032
depends_on:
redis:
condition: service_healthy
healthcheck:
test: ["CMD-SHELL", "curl -sf http://localhost:30032/actuator/health || exit 1"]
interval: 30s
timeout: 10s
retries: 5
start_period: 90s
# ---------- Admin WebVue 管理后台Nginx only ----------
# 静态文件 bind-mount 自 ${SINGLE_ADMIN_WEB_DIR}(宿主机 /www/wwwroot/leilei-jfadmin.czchunfang.com/
# 更新前端rsync 新 dist/ 到宿主机目录 → 浏览器硬刷新即可(无需重启容器)
single-admin-web:
<<: *common
build:
context: .
dockerfile: ../single-shop/admin-web.Dockerfile
image: jifenmall-czleilei240/admin-web:local
container_name: single-admin-web
networks: [single-net]
ports:
- "${SINGLE_ADMIN_PORT:-18081}:80"
volumes:
# 静态文件 bind-mountrsync 更新宿主机目录后立即生效
- ${SINGLE_ADMIN_WEB_DIR}:/usr/share/nginx/html
depends_on:
- single-admin-api
# ---------- H5 前端uni-app SPANginx only ----------
# 静态文件 bind-mount 自 ${SINGLE_H5_DIR}(宿主机 /www/wwwroot/leilei-jf.czchunfang.com/
# 更新前端rsync 新 unpackage/dist/build/h5/ 到宿主机目录 → 无需重启容器
single-h5:
<<: *common
build:
context: .
dockerfile: ../single-shop/h5.Dockerfile
image: jifenmall-czleilei240/h5:local
container_name: single-h5
networks: [single-net]
ports:
- "${SINGLE_H5_PORT:-18082}:80"
volumes:
# 静态文件 bind-mount
- ${SINGLE_H5_DIR}:/usr/share/nginx/html
depends_on:
- single-front-api