5.9 KiB
Executable File
5.9 KiB
Executable File
仓库概述
本目录 (/vol1/1000/Docker) 是基于 Docker Compose 的自托管基础设施生态系统。每个服务都在各自的子目录中运行,拥有独立的 docker-compose.yml 文件,并通过全局 .env 文件共享通用配置。
核心架构原则:
- 模块化服务:每个服务隔离在独立目录中,按功能分类组织
- 集中配置:根目录
.env包含所有共享变量 - 绝不在独立的 compose 文件中硬编码这些值 - 共享网络:所有服务使用外部 Docker 网络
trim-default进行服务间通信 - 统一重启策略:所有服务使用
restart: unless-stopped
常用操作命令
启动/更新服务
cd <service_directory>
docker compose up -d
查看日志
cd <service_directory>
docker compose logs -f <service_name>
停止服务
cd <service_directory>
docker compose down
更新所有服务
# 拉取最新镜像并重新创建容器
for dir in */; do
cd "$dir"
docker compose pull
docker compose up -d
cd ..
done
全局配置文件 (.env)
根目录 .env 是唯一的真实配置源。在 compose 文件中通过 ${VARIABLE_NAME} 引用变量。
关键变量:
TZ=Asia/Shanghai- 所有容器的时区PUID=1000,PGID=1000- Linux 用户映射,用于文件权限控制NETWORK_NAME=trim-default- 外部 Docker 网络名称HTTP_PROXY/HTTPS_PROXY- 代理配置192.168.68.109:7890ADMIN_USER/ADMIN_PASSWORD- 通用管理员凭据- 数据库凭据:
MYSQL_ROOT_PASSWORD、MYSQL_PASSWORD、POSTGRES_PASSWORD、REDIS_PASSWORD
存储路径:
BACKUP_DIR=/vol1/1000/Docker/backupsMEDIA_ROOT=/vol3/1000/Media(含子目录Cache、Pt、Porn、Music)
服务分类与说明
📚 媒体服务
media-cloud (媒体云服务)
端口范围: 17080-17085
- pansou: 网盘资源搜索,端口 17080
- openlist: 文件列表服务,端口 17081
- quark-auto-save: 夸克自动转存/追更,端口 17082
- aria2: 网盘直链下载器,端口 17085,配合 quark-auto-save 下载网盘资源到本地 Cloud/
media-pt (PT 下载服务)
端口范围: 17030-17033
- qbittorrent: BT 下载器,端口 17030 (Web)/17031 (BT)
- transmission: BT 下载器,端口 17032 (Web)/17033 (BT)
media-servers (媒体管理服务)
端口范围: 17021-17026
- moviepilot: 媒体管理,端口 17021,连接 qbittorrent 和 transmission
- music-tag-web: 音乐标签,端口 17022
- omnibox: 媒体工具,端口 17023
- danmu-api: 弹幕 API,端口 17025
- bonita: 媒体工具,端口 17026
media-player (媒体播放服务)
端口范围: 17060-17061
- emby: 媒体服务器,端口 17060,支持硬件加速
- jellyfin: 媒体服务器,端口 17061,支持硬件加速
🛠️ 开发服务
development (开发工具)
- dm8: 达梦数据库 DM8,端口 5236,UTF-8 大小写敏感,密码使用 ADMIN_PASSWORD
- redis: Redis 7 缓存服务,端口 6379,开启 AOF,密码使用 REDIS_PASSWORD
- minio: MinIO 对象存储,端口 9000 (API)/9001 (Console),数据持久化于存储空间 2 机械盘
- gitea: Git 服务器,端口 17100 (Web)/17101 (SSH),使用 PostgreSQL 数据库
- n8n: 工作流自动化,端口 17875,有独立的 PostgreSQL 数据库存储工作流
- sjzl: 企业应用,端口 10002-10004 (datavue), 17102 (tpridmp-service),使用
restart: unless-stopped(特殊例外)
📖 其他服务
calibre-web
- 镜像:
johngong/calibre-web - 端口:17090 (Web)/17091 (数据库)
- 用途:电子书库管理器,挂载 library 和 config
lucky
- 镜像:待补充
- 用途:工具服务,使用
network_mode: host,无需端口映射
oracle-proxy-configs
- 用途:Oracle 双出口 Hysteria2 代理客户端配置集(支持 OpenWrt OpenClash、FlClash、sing-box PC & Android 1.14+)
- 源路径:
/vol1/1000/docker/oracle-proxy-configs/ - 分发路径:
/vol2/1000/download/tool/代理/(供局域网内手机、PC 等终端直接下载配置文件及 APK)
端口规划总结
所有服务端口已按以下规范重新规划(所有端口均避开数字 4):
1702x→ media-servers (媒体管理)1703x→ media-pt (PT 下载)1706x→ media-player (媒体播放)1708x→ media-cloud (媒体云)1709x→ calibre-web (电子书)1710x→ development (开发工具)
Docker 网络
所有服务使用外部网络 trim-default。启动服务前此网络必须存在:
docker network create trim-default
服务间通信使用容器名作为主机名(例如,moviepilot 连接到 qbittorrent 和 transmission)。
环境文件使用模式
大多数服务通过软链接引用根目录 .env:
cd <service_directory>
ln -s ../.env .env
这实现了集中式凭据管理。添加新服务时,遵循此模式而非复制环境变量。
统一配置规范
重启策略
- 默认:
restart: unless-stopped
网络配置
所有服务必须包含:
networks:
- trim-default
networks:
trim-default:
external: true
env_file 配置
所有服务使用:
env_file:
- .env
开发指南
- 永不提交敏感凭据 -
.env文件包含真实密码,应设置安全权限(chmod 600) - 使用变量替换 - 始终在 compose 文件中引用
${VARIABLE_NAME} - 保持目录隔离 - 将服务特定配置保存在各自的子目录中
- 遵循现有模式 - 添加新服务时参考类似服务
- 测试网络连通性 - 在依赖服务前确保服务可通过容器名互相访问
- 统一配置规范 - 所有服务使用
restart: unless-stopped和trim-default网络 - 虚拟机数据管理 - 修改共享配置前务必备份数据,确保数据安全