3.0 KiB
3.0 KiB
title, type, tags, date
| title | type | tags | date | |||
|---|---|---|---|---|---|---|
| Docker堆栈 | concept |
|
2025-12-29 |
Docker堆栈
Definition
Docker 堆栈(Docker Stack)是指通过 Docker Compose 编排的多容器应用,由多个相互依赖的服务组成,共同提供完整功能。在 Zipline 图床方案中,MinIO + PostgreSQL + Zipline 构成一个完整的堆栈。
Zipline Stack Architecture
services:
minio: # S3 兼容存储
image: minio/minio:latest
depends_on: []
postgres: # 元数据库
image: postgres:16
depends_on: []
zipline: # 图床应用
image: ghcr.io/diced/zipline:latest
depends_on:
minio:
condition: service_healthy
postgres:
condition: service_healthy
Service Dependency Patterns
Pattern 1: Simple depends_on
service_a:
depends_on:
- service_b
仅确保启动顺序,不等待就绪。
Pattern 2: Health Check + Condition(本方案推荐)
service_b:
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/health"]
interval: 30s
retries: 3
service_a:
depends_on:
service_b:
condition: service_healthy
确保依赖服务就绪后才启动,避免竞态条件。
Pattern 3: wait-for Script
#!/bin/bash
wait-for-it.sh service:port -- echo "Service is ready"
Key Compose Features Used
| 功能 | 配置 | 说明 |
|---|---|---|
| 健康检查 | healthcheck |
自动检测服务状态 |
| 条件依赖 | condition: service_healthy |
等待健康检查通过 |
| 资源限制 | deploy.resources.limits |
防止单服务耗尽资源 |
| 重启策略 | restart: unless-stopped |
异常自动重启 |
| 端口映射 | ports |
暴露服务端口 |
| 卷挂载 | volumes |
数据持久化 |
Resource Limits in This Stack
| 服务 | 内存限制 | 说明 |
|---|---|---|
| MinIO | 1G | S3 存储,缓存友好 |
| PostgreSQL | 512M | 元数据,索引优先 |
| Zipline | 512M | Node.js,适中即可 |
Volume Persistence
| 卷路径 | 内容 | 备份策略 |
|---|---|---|
/volume1/docker/zipline-stack/minio/minio_data |
图片文件 | Synology Hyper Backup |
/volume1/docker/zipline-stack/zipline/pg_data |
数据库文件 | 不要直接备份(见下) |
Important: Database Volume Warning
警告:不要直接备份 PostgreSQL 数据目录(
/var/lib/postgresql/data)热备份运行中的数据库目录会导致数据损坏。应使用
pg_dump逻辑备份。
正确方式:
# 使用 pg_dump 逻辑备份(热备份,安全)
docker exec zipline_postgres pg_dump -U zipline -d zipline | gzip > backup.sql.gz
Connections
- MinIO ← part of ← Docker堆栈
- PostgreSQL ← part of ← Docker堆栈
- Zipline ← part of ← Docker堆栈
- 群晖 NAS ← hosts ← Docker堆栈