使用Docker Compose快速部署Hanko身份验证服务
2025-07-07 02:05:54作者:鲍丁臣Ursa
Hanko是一个现代化的身份验证解决方案,它提供了基于密码和无密码的身份验证功能。本文将详细介绍如何使用Docker Compose快速部署Hanko服务及其相关组件。
部署架构概述
这个Docker Compose配置定义了一个完整的Hanko身份验证系统,包含以下核心组件:
- Hanko后端服务:提供核心身份验证功能
- Hanko前端元素:用于集成到应用中的UI组件
- PostgreSQL数据库:存储用户数据和系统配置
- Redis服务:用于速率限制和会话管理
- 邮件测试服务:用于开发和测试环境中的邮件功能
详细组件解析
1. 数据库服务 (PostgreSQL)
postgresd:
image: postgres:12-alpine
ports:
- "5432:5432"
environment:
- POSTGRES_USER=hanko
- POSTGRES_PASSWORD=hanko
- POSTGRES_DB=hanko
healthcheck:
test: pg_isready -U hanko -d hanko
interval: 10s
timeout: 10s
retries: 3
start_period: 30s
PostgreSQL是Hanko的主要数据存储,使用轻量级的Alpine Linux版本。配置中包含了:
- 预设的用户名、密码和数据库名
- 健康检查机制确保服务可用性后才启动依赖服务
- 端口映射允许外部访问(开发环境)
2. Hanko核心服务
Hanko服务分为两个部分:
迁移服务:
hanko-migrate:
build: ../../backend
command: --config /etc/config/config.yaml migrate up
depends_on:
postgresd:
condition: service_healthy
负责执行数据库迁移,确保数据库结构是最新的。它会在PostgreSQL服务健康后才运行。
主服务:
hanko:
build: ../../backend
ports:
- '8000:8000' # public
- '8001:8001' # admin
command: serve --config /etc/config/config.yaml all
提供两个端口:
- 8000:公共API端点
- 8001:管理API端点 配置了自动重启策略确保服务高可用。
3. 前端元素服务
elements:
build: ../../frontend
ports:
- "9500:80"
提供可嵌入的UI组件,包括:
- 登录表单
- 注册表单
- 密码重置界面 这些组件可以通过JavaScript轻松集成到任何Web应用中。
4. 快速启动示例
quickstart:
build: ../../quickstart
ports:
- "8888:8080"
environment:
- HANKO_URL=http://localhost:8000
- HANKO_ELEMENT_URL=http://localhost:9500/elements.js
这是一个演示应用,展示如何集成Hanko服务。它预配置了与Hanko后端和前端元素的连接。
5. 辅助服务
Redis:
redis:
image: redis:7-alpine
ports:
- "6379:6379"
用于速率限制和会话管理,确保系统安全和性能。
邮件测试工具:
mailslurper:
image: marcopas/docker-mailslurper:latest
ports:
- '8080:8080' # web UI
- '8085:8085'
在开发环境中测试邮件发送功能,可以通过Web界面查看发送的邮件。
网络配置
networks:
intranet:
所有服务都连接到一个名为"intranet"的内部网络,确保服务间通信的安全和隔离。
部署流程解析
- 数据库初始化:PostgreSQL服务首先启动并完成健康检查
- 数据库迁移:hanko-migrate服务执行必要的数据库迁移
- 主服务启动:hanko服务在迁移成功后启动
- 前端服务启动:提供可嵌入的UI组件
- 辅助服务启动:Redis和邮件测试工具提供服务支持
配置注意事项
- 配置文件通过卷挂载方式注入容器
- 密码功能通过环境变量
PASSWORD_ENABLED
控制 - 所有服务使用同一个内部网络,确保安全通信
- 端口映射配置考虑了开发和测试需求
实际应用建议
对于生产环境,建议:
- 替换默认的数据库密码
- 配置TLS/SSL加密
- 使用专业的邮件服务替代邮件测试工具
- 调整Redis和PostgreSQL的资源限制
- 配置适当的监控和日志收集
这个Docker Compose配置为开发者提供了一个完整的Hanko身份验证解决方案,可以快速搭建开发测试环境,理解系统架构和组件交互方式。