Docker Compose 配置文件中文注释及卷目录说明
摘要:本文对 BitMagnet 及其依赖的 PostgreSQL 服务的 Docker Compose 配置文件进行了详细中文注释,并说明了在宿主机上需要创建哪些文件夹以实现数据持久化。
1. Docker Compose 文件结构概述
该配置文件使用 docker-compose.yml
定义了两个服务:`bitmagnet` 和 `postgres`,分别用于部署 BitMagnet 应用及其数据库。
2. 服务详解
2.1 bitmagnet 服务
image: ghcr.io/bitmagnet-io/bitmagnet:latest
container_name: bitmagnet
使用 GitHub Container Registry 上的最新版 BitMagnet 镜像,容器名称为 bitmagnet
。
ports:
- "3333:3333"
- "3334:3334/tcp"
- "3334:3334/udp"
将主机的端口映射到容器中,分别用于 API、WebUI(3333)和 BitTorrent 协议通信(3334,支持 TCP 和 UDP)。
restart: unless-stopped
容器会自动重启,除非手动停止。
environment:
- POSTGRES_HOST=postgres
- POSTGRES_PASSWORD=postgres
- TMDB_API_KEY=***
设置环境变量,包括 PostgreSQL 数据库地址、密码和 TMDB API 密钥(已脱敏)。
volumes:
- ./config:/root/.config/bitmagnet
将宿主机上的 ./config
目录挂载到容器中的 /root/.config/bitmagnet
,用于持久化配置文件。
command:
- worker
- run
- --keys=http_server
- --keys=queue_server
- --keys=dht_crawler
运行 BitMagnet 的工作进程,并启用 HTTP 服务器、任务队列和 DHT 爬虫功能。
depends_on:
postgres:
condition: service_healthy
表示 bitmagnet
服务依赖于 postgres
服务,且必须等 postgres
健康检查通过后才启动。
2.2 postgres 服务
image: postgres:16-alpine
container_name: bitmagnet-postgres
使用 PostgreSQL 16 的 Alpine 版本镜像,容器名为 bitmagnet-postgres
。
volumes:
- ./data/postgres:/var/lib/postgresql/data
将宿主机上的 ./data/postgres
挂载到容器中,用于持久化数据库数据。
ports:
- "5432:5432"
将主机的 5432 端口暴露给外部访问(可选,已取消注释)。
restart: unless-stopped
容器会自动重启,除非手动停止。
environment:
- POSTGRES_PASSWORD=postgres
- POSTGRES_DB=bitmagnet
- PGUSER=postgres
设置 PostgreSQL 用户名、密码和数据库名。
shm_size: 1g
设置共享内存大小为 1GB,提升数据库性能。
healthcheck:
test:
- CMD-SHELL
- pg_isready
start_period: 20s
interval: 10s
健康检查命令,确保 PostgreSQL 正常运行后再启动主应用。
3. 宿主机需创建的文件夹
为了实现数据持久化,宿主机需要创建以下目录:
./config
:用于存储 BitMagnet 的配置文件。./data/postgres
:用于存储 PostgreSQL 的数据库数据。
确保这些目录在运行 docker-compose up
前已经存在。
4. 总结
本文详细解释了 BitMagnet 和 PostgreSQL 的 Docker Compose 配置文件,并指出在宿主机上需要创建的目录以实现数据持久化。用户可根据实际需求调整端口、环境变量或禁用 DHT 爬虫等功能。