Files
urbanLifeline/urbanLifelineServ/.bin/docker/urbanlifeline/docker-compose.yml
2025-12-26 18:55:54 +08:00

323 lines
9.4 KiB
YAML
Raw 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.

version: '3.8'
# urban-lifeline 开发环境 Docker Compose 配置
# 使用主机的 MySQL 数据库
networks:
urban-lifeline:
driver: bridge
name: urban-lifeline
services:
nacos:
image: nacos/nacos-server:v3.1.0
container_name: urban-lifeline-nacos
restart: unless-stopped
networks:
- urban-lifeline
ports:
- "8081:8080" # Nacos Console (Web UI) - 映射到主机 8081
- "8848:8848" # Nacos HTTP API
- "9848:9848" # Nacos gRPC 客户端请求
- "9849:9849" # Nacos gRPC 服务间同步
environment:
# 运行模式
MODE: standalone
# 数据库配置 - 使用主机 MySQL
SPRING_DATASOURCE_PLATFORM: mysql
MYSQL_SERVICE_HOST: host.docker.internal # Docker Desktop
# MYSQL_SERVICE_HOST: 172.17.0.1 # Linux 使用此行,注释上一行
MYSQL_SERVICE_PORT: 3306
MYSQL_SERVICE_DB_NAME: nacos_config
MYSQL_SERVICE_USER: root
MYSQL_SERVICE_PASSWORD: "123456"
MYSQL_SERVICE_DB_PARAM: allowPublicKeyRetrieval=true&useSSL=false
# JVM 配置
JVM_XMS: 512m
JVM_XMX: 512m
JVM_XMN: 256m
# 认证配置(开发环境关闭)
NACOS_AUTH_ENABLE: "false"
NACOS_AUTH_TOKEN: ZlRkR2ZxR3BvZ1F0a3JxY2V6RUx2cUh1Rkx6V1ZQbE9kUVd1R1VOcWFFS2t3dG5hS0E9PQ==
NACOS_AUTH_IDENTITY_KEY: ZlRkR2ZxR3BvZ1F0a3JxY2V6RUx2cUh1Rkx6V1ZQbE9kUVd1R1VOcWFFS2t3dG5hS0E9PQ==
NACOS_AUTH_IDENTITY_VALUE: ZlRkR2ZxR3BvZ1F0a3JxY2V6RUx2cUh1Rkx6V1ZQbE9kUVd1R1VOcWFFS2t3dG5hS0E9PQ==
volumes:
# 数据持久化到主机目录
- ../../../.data/docker/nacos/data:/home/nacos/data
- ../../../.data/docker/nacos/logs:/home/nacos/logs
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8848/nacos/"]
interval: 30s
timeout: 10s
retries: 5
start_period: 60s
# Linux 需要添加 extra_hosts 来访问主机服务
extra_hosts:
- "host.docker.internal:host-gateway"
minio:
image: minio/minio:latest
container_name: urban-lifeline-minio
restart: unless-stopped
networks:
- urban-lifeline
ports:
- "9000:9000" # MinIO API 端口
- "9001:9001" # MinIO Console (Web UI) 端口
environment:
# 管理员账户配置
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin123
# Console 地址配置
MINIO_CONSOLE_ADDRESS: ":9001"
MINIO_ADDRESS: ":9000"
# 时区设置
TZ: Asia/Shanghai
volumes:
# 数据持久化到主机目录
- ../../../.data/docker/minio/data:/data
- ../../../.data/docker/minio/config:/root/.minio
command: server /data --console-address ":9001"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
start_period: 30s
# ====================== Jitsi Meet 视频会议服务 ======================
jitsi-web:
image: jitsi/web:stable-9584
container_name: urban-lifeline-jitsi-web
restart: unless-stopped
networks:
- urban-lifeline
ports:
- "8280:80" # 保留原 HTTP 端口
- "8443:443" # 保留原 HTTPS 端口(仅保留映射,实际禁用 HTTPS
environment:
# 基础配置(局域网访问)
TZ: Asia/Shanghai
PUBLIC_URL: http://192.168.0.253:8280
# 核心修复:解决 WebSocket 协议/URL 错误(局域网 IP
BOSH_URL_BASE: http://jitsi-prosody:5280
WEBSOCKET_URL: ws://192.168.0.253:8280/xmpp-websocket
# XMPP 配置(完全保留原设置)
XMPP_DOMAIN: meet.jitsi
XMPP_AUTH_DOMAIN: auth.meet.jitsi
XMPP_BOSH_URL_BASE: http://jitsi-prosody:5280
XMPP_MUC_DOMAIN: muc.meet.jitsi
XMPP_INTERNAL_MUC_DOMAIN: internal-muc.meet.jitsi
XMPP_GUEST_DOMAIN: guest.meet.jitsi
# Jicofo 配置(完全保留原设置)
JICOFO_COMPONENT_SECRET: jicofo-secret
JICOFO_AUTH_USER: focus
# JVB 配置(完全保留原设置)
JVB_AUTH_USER: jvb
JVB_AUTH_PASSWORD: jvb-password
# JWT 认证配置(完全保留原设置)
ENABLE_AUTH: 1
ENABLE_GUESTS: 1
AUTH_TYPE: jwt
JWT_APP_ID: urbanLifeline
JWT_APP_SECRET: urbanLifelinejitsi
JWT_ACCEPTED_ISSUERS: urbanLifeline
JWT_ACCEPTED_AUDIENCES: jitsi
JWT_ASAP_KEYSERVER: https://192.168.0.253:8280/
JWT_ALLOW_EMPTY: 0
JWT_AUTH_TYPE: token
JWT_TOKEN_AUTH_MODULE: token_verification
# 界面/功能配置(完全保留原设置)
ENABLE_RECORDING: 0
ENABLE_TRANSCRIPTIONS: 0
ENABLE_SUBDOMAINS: 0
ENABLE_XMPP_WEBSOCKET: 1
ENABLE_SCTP: 1
DISABLE_HTTPS: 1
# 日志/HTTPS 配置
ENABLE_LETSENCRYPT: 0
LETSENCRYPT_DOMAIN: 192.168.0.253
volumes:
- ../../../.data/docker/jitsi/web:/config
- ../../../.data/docker/jitsi/web/crontabs:/var/spool/cron/crontabs
- ../../../.data/docker/jitsi/transcripts:/usr/share/jitsi-meet/transcripts
depends_on:
- jitsi-prosody
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:80/"]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
# XMPP 服务Prosody- 完全保留原配置
jitsi-prosody:
image: jitsi/prosody:stable-9584
container_name: urban-lifeline-jitsi-prosody
restart: unless-stopped
networks:
- urban-lifeline
expose:
- "5222" # XMPP客户端连接内部
- "5347" # XMPP组件连接内部
- "5280" # BOSH/WebSocket内部
environment:
TZ: Asia/Shanghai
# XMPP域配置完全保留
XMPP_DOMAIN: meet.jitsi
XMPP_AUTH_DOMAIN: auth.meet.jitsi
XMPP_MUC_DOMAIN: muc.meet.jitsi
XMPP_INTERNAL_MUC_DOMAIN: internal-muc.meet.jitsi
XMPP_GUEST_DOMAIN: guest.meet.jitsi
# Jicofo组件密钥完全保留
JICOFO_COMPONENT_SECRET: jicofo-secret
JICOFO_AUTH_USER: focus
JICOFO_AUTH_PASSWORD: focus-password
# JVB认证完全保留
JVB_AUTH_USER: jvb
JVB_AUTH_PASSWORD: jvb-password
# JWT认证完全保留
ENABLE_AUTH: 1
ENABLE_GUESTS: 1
AUTH_TYPE: jwt
JWT_APP_ID: urbanLifeline
JWT_APP_SECRET: urbanLifelinejitsi
JWT_ACCEPTED_ISSUERS: urbanLifeline
JWT_ACCEPTED_AUDIENCES: jitsi
JWT_ALLOW_EMPTY: 0
JWT_AUTH_TYPE: token
JWT_TOKEN_AUTH_MODULE: token_verification
# 日志配置(完全保留)
LOG_LEVEL: info
# 公共URL局域网访问
PUBLIC_URL: http://192.168.0.253:8280
volumes:
- ../../../.data/docker/jitsi/prosody/config:/config
- ../../../.data/docker/jitsi/prosody/prosody-plugins-custom:/prosody-plugins-custom
healthcheck:
test: ["CMD", "prosodyctl", "status"]
interval: 30s
timeout: 10s
retries: 3
start_period: 90s
# 会议焦点控制器Jicofo- 完全保留原配置
jitsi-jicofo:
image: jitsi/jicofo:stable-9584
container_name: urban-lifeline-jitsi-jicofo
restart: unless-stopped
networks:
- urban-lifeline
environment:
TZ: Asia/Shanghai
# XMPP配置完全保留
XMPP_DOMAIN: meet.jitsi
XMPP_AUTH_DOMAIN: auth.meet.jitsi
XMPP_MUC_DOMAIN: muc.meet.jitsi
XMPP_INTERNAL_MUC_DOMAIN: internal-muc.meet.jitsi
XMPP_SERVER: jitsi-prosody
# Jicofo认证完全保留
JICOFO_COMPONENT_SECRET: jicofo-secret
JICOFO_AUTH_USER: focus
JICOFO_AUTH_PASSWORD: focus-password
# JWT配置完全保留
AUTH_TYPE: jwt
# JVB配置完全保留
JVB_BREWERY_MUC: jvbbrewery
# 日志级别(完全保留)
JICOFO_ENABLE_HEALTH_CHECKS: "true"
volumes:
- ../../../.data/docker/jitsi/jicofo:/config
depends_on:
- jitsi-prosody
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8888/about/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 90s
# 视频桥接服务JVB- 仅修复 WebSocket 相关保留IP/端口
jitsi-jvb:
image: jitsi/jvb:stable-9584
container_name: urban-lifeline-jitsi-jvb
restart: unless-stopped
networks:
- urban-lifeline
ports:
- "10000:10000/udp" # 保留原 UDP 端口
- "4443:4443/tcp" # 保留原 TCP 端口
environment:
TZ: Asia/Shanghai
# XMPP配置完全保留
XMPP_DOMAIN: meet.jitsi
XMPP_AUTH_DOMAIN: auth.meet.jitsi
XMPP_INTERNAL_MUC_DOMAIN: internal-muc.meet.jitsi
XMPP_SERVER: jitsi-prosody
# JVB认证完全保留
JVB_AUTH_USER: jvb
JVB_AUTH_PASSWORD: jvb-password
# JVB配置完全保留
JVB_BREWERY_MUC: jvbbrewery
JVB_PORT: 10000
JVB_STUN_SERVERS: stun.l.google.com:19302,stun1.l.google.com:19302
# 本地IP配置局域网IP - 关键配置!)
DOCKER_HOST_ADDRESS: 192.168.0.253
JVB_ADVERTISE_IPS: 192.168.0.253
# 启用统计(完全保留)
JVB_ENABLE_APIS: rest,colibri
# 性能优化(完全保留)
JVB_TCP_HARVESTER_DISABLED: "false"
JVB_TCP_PORT: 4443
JVB_TCP_MAPPED_PORT: 4443
volumes:
- ../../../.data/docker/jitsi/jvb:/config
depends_on:
- jitsi-prosody
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/about/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 90s