首页
/ Pad.ws项目Docker Compose部署架构深度解析

Pad.ws项目Docker Compose部署架构深度解析

2025-07-10 05:52:49作者:郦嵘贵Just

项目概述

Pad.ws是一个基于容器化技术构建的现代化Web应用平台,其部署架构采用了Docker Compose编排多个关键服务组件。本文将从技术架构角度深入分析该项目的容器化部署方案,帮助开发者理解其服务组成和交互关系。

核心服务组件

1. PostgreSQL数据库服务

postgres:
  image: postgres:16
  environment:
    POSTGRES_USER: ${POSTGRES_USER}
    POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    POSTGRES_DB: ${POSTGRES_DB}
  volumes:
    - postgres_data:/var/lib/postgresql/data
  • 使用PostgreSQL 16作为主数据库
  • 通过环境变量配置数据库用户、密码和数据库名称
  • 采用数据卷持久化存储数据库文件,确保数据不丢失
  • 使用network_mode: host实现主机网络模式,简化容器间通信

2. Redis缓存服务

redis:
  image: redis:alpine
  command: redis-server --requirepass ${REDIS_PASSWORD} --save 60 1 --loglevel warning
  • 基于轻量级Redis Alpine镜像
  • 配置了密码保护和自动持久化策略(每60秒或至少有1个变更时保存)
  • 同样采用主机网络模式,暴露标准Redis端口6379

身份认证服务(Keycloak)

keycloak:
  image: quay.io/keycloak/keycloak:25.0
  environment:
    KC_DB: postgres
    KC_DB_URL: jdbc:postgresql://localhost:5432/${POSTGRES_DB}
  • 使用Keycloak 25.0提供OIDC身份认证
  • 后端集成PostgreSQL数据库存储认证数据
  • 配置了管理账号和HTTP访问(非生产环境适用)
  • 支持代理转发,适合边缘部署场景

Coder开发环境服务

coder:
  image: ghcr.io/coder/coder:latest
  environment:
    CODER_PG_CONNECTION_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@localhost:5432/${POSTGRES_DB}
  • 使用最新版Coder提供云端开发环境
  • 集成OIDC认证(与Keycloak对接)
  • 连接同一PostgreSQL实例
  • 挂载Docker socket实现容器管理能力
  • 需要配置Docker用户组权限

Pad.ws主应用服务

pad:
  image: ghcr.io/pad-ws/pad.ws:main
  environment:
    - OIDC_CLIENT_ID=${OIDC_CLIENT_ID}
    - OIDC_CLIENT_SECRET=${OIDC_CLIENT_SECRET}
    - POSTGRES_HOST=localhost
    - REDIS_HOST=${REDIS_HOST}
  • 主应用镜像来自项目构建的main分支
  • 完整的前后端资源部署(包含静态资源目录)
  • 深度集成OIDC认证、PostgreSQL和Redis
  • 与Coder服务API对接(需要配置API密钥)
  • 可配置多个API工作进程提高并发能力

网络与存储设计

  1. 网络架构

    • 所有服务均采用network_mode: host,简化容器间通信
    • 依赖localhost地址进行服务发现
    • 适合单机开发环境部署
  2. 存储设计

    • PostgreSQL和Redis使用命名卷持久化数据
    • 确保服务重启后数据不丢失
    • 数据卷定义在文件底部统一管理

环境变量设计

整个部署架构高度依赖环境变量配置,主要包括:

  • 数据库凭证(POSTGRES_*系列)
  • Redis访问配置(REDIS_*系列)
  • Keycloak管理账号和端口设置
  • OIDC认证相关参数
  • Coder集成配置
  • 应用特定参数(如前端URL、工作进程数等)

部署建议

  1. 开发环境

    • 可直接使用此配置
    • 注意配置合理的环境变量
    • 建议使用.env文件管理敏感信息
  2. 生产环境

    • 应考虑替换主机网络模式为自定义网络
    • 增加适当的资源限制
    • 配置TLS加密通信
    • 实现服务健康检查和监控

总结

Pad.ws项目的Docker Compose文件展示了一个典型的现代化Web应用架构,集成了数据库、缓存、身份认证和开发环境服务。这种设计提供了良好的开发体验,同时也保持了向生产环境演进的可能性。理解这个架构有助于开发者根据实际需求进行调整和扩展。