首页
/ 使用Docker Compose快速部署Hanko身份验证服务

使用Docker Compose快速部署Hanko身份验证服务

2025-07-07 02:05:54作者:鲍丁臣Ursa

Hanko是一个现代化的身份验证解决方案,它提供了基于密码和无密码的身份验证功能。本文将详细介绍如何使用Docker Compose快速部署Hanko服务及其相关组件。

部署架构概述

这个Docker Compose配置定义了一个完整的Hanko身份验证系统,包含以下核心组件:

  1. Hanko后端服务:提供核心身份验证功能
  2. Hanko前端元素:用于集成到应用中的UI组件
  3. PostgreSQL数据库:存储用户数据和系统配置
  4. Redis服务:用于速率限制和会话管理
  5. 邮件测试服务:用于开发和测试环境中的邮件功能

详细组件解析

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"的内部网络,确保服务间通信的安全和隔离。

部署流程解析

  1. 数据库初始化:PostgreSQL服务首先启动并完成健康检查
  2. 数据库迁移:hanko-migrate服务执行必要的数据库迁移
  3. 主服务启动:hanko服务在迁移成功后启动
  4. 前端服务启动:提供可嵌入的UI组件
  5. 辅助服务启动:Redis和邮件测试工具提供服务支持

配置注意事项

  • 配置文件通过卷挂载方式注入容器
  • 密码功能通过环境变量PASSWORD_ENABLED控制
  • 所有服务使用同一个内部网络,确保安全通信
  • 端口映射配置考虑了开发和测试需求

实际应用建议

对于生产环境,建议:

  1. 替换默认的数据库密码
  2. 配置TLS/SSL加密
  3. 使用专业的邮件服务替代邮件测试工具
  4. 调整Redis和PostgreSQL的资源限制
  5. 配置适当的监控和日志收集

这个Docker Compose配置为开发者提供了一个完整的Hanko身份验证解决方案,可以快速搭建开发测试环境,理解系统架构和组件交互方式。