Files
docker/README.md
T

5.9 KiB
Executable File
Raw Blame History

仓库概述

本目录 (/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:7890
  • ADMIN_USER/ADMIN_PASSWORD - 通用管理员凭据
  • 数据库凭据:MYSQL_ROOT_PASSWORD、MYSQL_PASSWORD、POSTGRES_PASSWORD、REDIS_PASSWORD

存储路径:

  • BACKUP_DIR=/vol1/1000/Docker/backups
  • MEDIA_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

开发指南

  1. 永不提交敏感凭据 - .env 文件包含真实密码,应设置安全权限(chmod 600)
  2. 使用变量替换 - 始终在 compose 文件中引用 ${VARIABLE_NAME}
  3. 保持目录隔离 - 将服务特定配置保存在各自的子目录中
  4. 遵循现有模式 - 添加新服务时参考类似服务
  5. 测试网络连通性 - 在依赖服务前确保服务可通过容器名互相访问
  6. 统一配置规范 - 所有服务使用 restart: unless-stopped 和 trim-default 网络
  7. 虚拟机数据管理 - 修改共享配置前务必备份数据,确保数据安全