完善 Docker 部署骨架并整理开源发布资料
- 调整 Dockerfile 与入口脚本,拆分应用、MySQL、Redis 的部署职责 - 新增 docker-compose、docker ignore 与 Docker 环境变量示例 - 重写 README 并补充 Docker 部署说明与第三方资产说明 - 将后台示例账号与 webhook token 改为安全占位值,移除弱口令默认兜底
This commit is contained in:
99
docker-compose.yml
Normal file
99
docker-compose.yml
Normal file
@@ -0,0 +1,99 @@
|
||||
services:
|
||||
mariadb:
|
||||
image: mariadb:11
|
||||
container_name: abot-mariadb
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
# 数据库初始化参数统一通过 compose 管理,便于首次部署和后续迁移。
|
||||
MARIADB_ROOT_PASSWORD: ${ABOT_DB_PASSWORD:-please_change_me}
|
||||
MARIADB_DATABASE: ${ABOT_DB_NAME:-message_archive}
|
||||
TZ: ${TZ:-Asia/Shanghai}
|
||||
command:
|
||||
- --character-set-server=utf8mb4
|
||||
- --collation-server=utf8mb4_unicode_ci
|
||||
ports:
|
||||
- "${ABOT_DB_PORT_EXPOSED:-3306}:3306"
|
||||
volumes:
|
||||
# 独立数据卷保证数据库升级或重建容器后数据仍然保留。
|
||||
- mariadb_data:/var/lib/mysql
|
||||
healthcheck:
|
||||
test: ["CMD", "mariadb-admin", "ping", "-h", "127.0.0.1", "-p${ABOT_DB_PASSWORD:-please_change_me}"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
start_period: 20s
|
||||
|
||||
redis:
|
||||
image: redis:7
|
||||
container_name: abot-redis
|
||||
restart: unless-stopped
|
||||
command: >
|
||||
sh -c '
|
||||
if [ -n "$${ABOT_REDIS_PASSWORD}" ]; then
|
||||
exec redis-server --appendonly yes --requirepass "$${ABOT_REDIS_PASSWORD}";
|
||||
else
|
||||
exec redis-server --appendonly yes;
|
||||
fi'
|
||||
environment:
|
||||
ABOT_REDIS_PASSWORD: ${ABOT_REDIS_PASSWORD:-}
|
||||
TZ: ${TZ:-Asia/Shanghai}
|
||||
ports:
|
||||
- "${ABOT_REDIS_PORT_EXPOSED:-6379}:6379"
|
||||
volumes:
|
||||
# Redis 使用 AOF 持久化,兼顾易用性与基础数据保留能力。
|
||||
- redis_data:/data
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "if [ -n \"$${ABOT_REDIS_PASSWORD}\" ]; then redis-cli -a \"$${ABOT_REDIS_PASSWORD}\" ping; else redis-cli ping; fi"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
start_period: 10s
|
||||
|
||||
abot:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
container_name: abot-app
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
mariadb:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
env_file:
|
||||
# 默认从项目根目录 .env 读取部署配置,与你现有的环境变量治理方式保持一致。
|
||||
- .env
|
||||
environment:
|
||||
TZ: ${TZ:-Asia/Shanghai}
|
||||
ABOT_ENVIRONMENT: ${ABOT_ENVIRONMENT:-production}
|
||||
ABOT_DB_HOST: mariadb
|
||||
ABOT_DB_PORT: 3306
|
||||
ABOT_DB_NAME: ${ABOT_DB_NAME:-message_archive}
|
||||
ABOT_DB_USER: ${ABOT_DB_USER:-root}
|
||||
ABOT_DB_PASSWORD: ${ABOT_DB_PASSWORD:-please_change_me}
|
||||
ABOT_REDIS_HOST: redis
|
||||
ABOT_REDIS_PORT: 6379
|
||||
ABOT_REDIS_DB: ${ABOT_REDIS_DB:-0}
|
||||
ABOT_REDIS_PASSWORD: ${ABOT_REDIS_PASSWORD:-}
|
||||
DASHBOARD_HOST: 0.0.0.0
|
||||
DASHBOARD_PORT: ${DASHBOARD_PORT:-8888}
|
||||
WECHAT_SERVER_URL: ${WECHAT_SERVER_URL:-http://host.docker.internal:8059/}
|
||||
WECHAT_SERVER_IP: ${WECHAT_SERVER_IP:-host.docker.internal}
|
||||
WECHAT_SERVER_PORT: ${WECHAT_SERVER_PORT:-8059}
|
||||
WECHAT_WXID: ${WECHAT_WXID:-}
|
||||
WECHAT_DEVICE_NAME: ${WECHAT_DEVICE_NAME:-ABOTPad}
|
||||
WECHAT_DEVICE_ID: ${WECHAT_DEVICE_ID:-}
|
||||
ports:
|
||||
- "${DASHBOARD_PORT:-8888}:8888"
|
||||
volumes:
|
||||
# 日志目录映射到宿主机,方便排障与运维备份。
|
||||
- ./logs:/app/logs
|
||||
# 保留 wechat_ipad 的本地配置文件,避免容器重建后丢失登录态。
|
||||
- ./wechat_ipad/config.toml:/app/wechat_ipad/config.toml
|
||||
extra_hosts:
|
||||
# 兼容 Linux 环境下通过 host.docker.internal 访问宿主机上的 wechat_ipad server。
|
||||
- "host.docker.internal:host-gateway"
|
||||
|
||||
volumes:
|
||||
mariadb_data:
|
||||
redis_data:
|
||||
Reference in New Issue
Block a user