Umami 网站分析工具 Docker Compose 部署指南
2025-07-05 05:08:20作者:薛曦旖Francesca
Umami 是一个开源的、注重隐私保护的网站分析工具,它提供了简洁直观的界面来跟踪网站访问数据。本文将详细介绍如何使用 Docker Compose 部署 Umami 及其 PostgreSQL 数据库。
架构概述
该 Docker Compose 文件定义了一个由两个服务组成的系统架构:
- Umami 应用服务:基于 Node.js 构建的网站分析应用
- PostgreSQL 数据库服务:用于持久化存储分析数据
服务配置详解
Umami 应用服务配置
umami:
image: ghcr.io/umami-software/umami:postgresql-latest
ports:
- "3000:3000"
environment:
DATABASE_URL: postgresql://umami:umami@db:5432/umami
DATABASE_TYPE: postgresql
APP_SECRET: replace-me-with-a-random-string
depends_on:
db:
condition: service_healthy
restart: always
healthcheck:
test: ["CMD-SHELL", "curl http://localhost:3000/api/heartbeat"]
interval: 5s
timeout: 5s
retries: 5
关键配置说明:
- 镜像选择:使用了官方提供的 PostgreSQL 兼容版本镜像
- 端口映射:将容器内的 3000 端口映射到主机的 3000 端口
- 环境变量:
DATABASE_URL
:定义了连接 PostgreSQL 的 URLDATABASE_TYPE
:明确指定使用 PostgreSQL 数据库APP_SECRET
:用于加密会话的安全密钥,部署时必须替换为随机字符串
- 健康检查:定期检查应用是否正常运行
- 依赖管理:确保数据库服务健康后才启动应用
PostgreSQL 数据库服务配置
db:
image: postgres:15-alpine
environment:
POSTGRES_DB: umami
POSTGRES_USER: umami
POSTGRES_PASSWORD: umami
volumes:
- umami-db-data:/var/lib/postgresql/data
restart: always
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
interval: 5s
timeout: 5s
retries: 5
关键配置说明:
- 轻量级镜像:使用 Alpine Linux 基础的 PostgreSQL 15 镜像,体积更小
- 认证配置:预设了数据库名称、用户名和密码(均为 umami)
- 数据持久化:通过命名卷
umami-db-data
持久化存储数据 - 健康检查:确保数据库服务已准备好接受连接
部署实践建议
-
安全加固:
- 务必修改
APP_SECRET
为强随机字符串 - 考虑修改默认的数据库凭据(用户名/密码)
- 务必修改
-
网络配置:
- 生产环境中建议添加自定义网络而非使用默认网络
- 考虑使用反向代理(如 Nginx)暴露服务
-
性能调优:
- 可根据访问量调整 PostgreSQL 的内存参数
- 对于高流量网站,考虑分离应用和数据库到不同主机
-
备份策略:
- 定期备份
umami-db-data
卷中的数据 - 考虑设置自动备份机制
- 定期备份
部署步骤
- 创建
docker-compose.yml
文件并填入上述内容 - 修改
APP_SECRET
和其他安全相关配置 - 运行
docker-compose up -d
启动服务 - 访问
http://localhost:3000
验证部署
常见问题排查
-
应用无法启动:
- 检查数据库服务是否健康
- 查看容器日志:
docker-compose logs umami
-
数据库连接问题:
- 确认环境变量中的连接字符串正确
- 验证数据库服务健康状态
-
性能问题:
- 检查主机资源使用情况
- 考虑增加 PostgreSQL 的资源限制
通过以上配置和说明,您可以轻松部署一个功能完整的 Umami 网站分析系统。这种容器化部署方式不仅简化了安装过程,还便于后续的维护和扩展。