Wakapi项目Docker Compose部署指南:构建开发者活动追踪系统
2025-07-09 06:56:46作者:宣利权Counsellor
概述
Wakapi是一个开源的开发者活动追踪工具,能够记录和分析开发者的编码活动。本文将详细介绍如何使用Docker Compose文件来部署Wakapi系统,包括服务配置、数据库设置和安全实践。
核心服务架构
Wakapi的Docker Compose配置主要包含两个关键服务:
- Wakapi主服务:基于项目代码构建,提供核心功能
- PostgreSQL数据库服务:使用PostgreSQL 17版本作为数据存储
这种分离式架构遵循了微服务设计原则,确保了系统的可扩展性和维护性。
详细配置解析
Wakapi主服务配置
wakapi:
build: .
init: true
ports:
- 3000:3000
restart: unless-stopped
- build: .:指示Docker从当前目录构建镜像
- init: true:使用init进程管理子进程,防止僵尸进程
- 端口映射:将容器内的3000端口映射到主机的3000端口
- 重启策略:除非手动停止,否则自动重启
数据库连接配置
environment:
WAKAPI_DB_TYPE: "postgres"
WAKAPI_DB_NAME: "wakapi"
WAKAPI_DB_USER: "wakapi"
WAKAPI_DB_HOST: "db"
WAKAPI_DB_PORT: "5432"
这些环境变量配置了Wakapi与PostgreSQL数据库的连接参数,包括数据库类型、名称、用户认证信息和连接地址。
安全最佳实践
敏感信息管理
配置文件中展示了两种处理敏感信息的方式:
-
通过Docker Secrets:
WAKAPI_DB_PASSWORD_FILE: "/run/secrets/db_password"
-
直接环境变量(不推荐用于生产环境):
WAKAPI_DB_PASSWORD: "your_password"
推荐在生产环境中使用Secrets方式,它提供了更好的安全性,因为:
- 密码不会出现在环境变量中
- 通过文件系统权限控制访问
- 支持密钥轮换
Secrets配置细节
secrets:
- source: db_password
target: db_password
uid: '1000'
gid: '1000'
mode: '0400'
- 权限设置:0400表示仅所有者可读
- 用户/组ID:指定了文件所有者,确保只有特定用户能访问
数据库服务配置
db:
image: postgres:17
environment:
POSTGRES_USER: "wakapi"
POSTGRES_PASSWORD_FILE: "/run/secrets/db_password"
POSTGRES_DB: "wakapi"
volumes:
- wakapi-db-data:/var/lib/postgresql/data
- 数据持久化:通过命名卷
wakapi-db-data
确保数据不会因容器重启而丢失 - 版本控制:明确指定PostgreSQL 17版本,避免兼容性问题
部署流程建议
-
准备环境变量:
export WAKAPI_PASSWORD_SALT=your_salt export WAKAPI_MAIL_SMTP_PASS=your_smtp_pass export WAKAPI_DB_PASSWORD=your_db_pass
-
启动服务:
docker compose up -d
-
验证部署:
- 访问
http://localhost:3000
- 检查容器日志:
docker compose logs
- 访问
性能与可靠性考虑
- 自动重启:
restart: unless-stopped
确保服务意外终止时自动恢复 - 资源隔离:数据库与主服务分离,避免资源竞争
- 数据持久化:数据库使用独立卷,防止数据丢失
扩展建议
- 添加反向代理:在生产环境中,建议在Wakapi前配置Nginx或Traefik
- 监控集成:可添加Prometheus和Grafana监控服务状态
- 备份策略:定期备份数据库卷数据
通过这份Docker Compose配置,您可以快速部署一个安全、可靠的Wakapi开发者活动追踪系统,为团队提供有价值的开发效率分析数据。