首页
/ Supersonic项目Docker-Compose部署指南:PostgreSQL与独立服务配置解析

Supersonic项目Docker-Compose部署指南:PostgreSQL与独立服务配置解析

2025-07-09 03:24:37作者:舒璇辛Bertina

项目概述

Supersonic是一个基于PostgreSQL的数据分析平台,通过Docker容器化部署可以快速搭建开发或生产环境。本文将详细解析其docker-compose.yml配置文件的技术要点,帮助开发者理解并正确部署Supersonic系统。

核心服务架构

Supersonic的Docker部署包含两个主要服务组件:

  1. 数据库服务:基于pgvector/pgvector镜像的PostgreSQL数据库
  2. 应用服务:supersonicbi/supersonic镜像提供的独立应用服务

PostgreSQL数据库服务配置详解

supersonic_postgres:
  image: pgvector/pgvector:pg17
  privileged: true
  container_name: supersonic_postgres
  environment:
    LANG: 'C.UTF-8'
    POSTGRES_ROOT_PASSWORD: root_password
    POSTGRES_DATABASE: postgres
    POSTGRES_USER: supersonic_user
    POSTGRES_PASSWORD: supersonic_password
  ports:
    - "15432:5432"
  volumes:
     - ./supersonic_pg/data:/var/lib/postgresql/data

关键配置说明

  1. 镜像选择:使用pgvector/pgvector镜像的pg17版本,该镜像内置了向量搜索功能,适合数据分析场景

  2. 环境变量

    • 设置UTF-8编码确保多语言支持
    • 配置了root用户密码和应用专用用户凭证
  3. 数据持久化

    • 将容器内的/var/lib/postgresql/data目录挂载到宿主机的./supersonic_pg/data目录
    • 确保数据库数据在容器重启后不会丢失
  4. 端口映射

    • 容器内5432端口映射到宿主机的15432端口
    • 避免与本地可能运行的PostgreSQL服务冲突

Supersonic应用服务配置详解

supersonic_standalone:
  image: supersonicbi/supersonic:${SUPERSONIC_VERSION:-latest}
  privileged: true
  container_name: supersonic_standalone
  environment:
    S2_DB_TYPE: postgres
    S2_DB_HOST: supersonic_postgres
    S2_DB_PORT: 5432
    S2_DB_DATABASE: postgres
    S2_DB_USER: supersonic_user
    S2_DB_PASSWORD: supersonic_password
  ports:
    - "9080:9080"

关键配置说明

  1. 版本控制

    • 使用环境变量${SUPERSONIC_VERSION}指定版本,默认使用latest标签
    • 可通过.env文件或命令行参数指定具体版本
  2. 数据库连接

    • 通过环境变量配置数据库连接参数
    • 使用服务名supersonic_postgres作为主机名,这是Docker内部网络DNS特性
  3. 资源限制

    • 限制CPU使用为2核
    • 限制内存使用为2GB
    • 防止应用占用过多系统资源

网络与健康检查配置

自定义网络

networks:
  supersonic_network:

创建专用网络supersonic_network,使两个服务能够通过服务名直接通信,无需暴露所有端口到宿主机。

健康检查机制

healthcheck:
  test: ["CMD-SHELL", "sh -c 'pg_isready -U supersonic_user -d postgres'"]
  interval: 10s
  timeout: 10s
  retries: 5

数据库服务配置了健康检查,确保应用服务启动前数据库已就绪:

  • 每10秒检查一次
  • 检查超时10秒
  • 最多重试5次

部署建议与最佳实践

  1. 数据持久化

    • 当前配置使用bind mount方式持久化PostgreSQL数据
    • 生产环境可考虑使用Docker volume提供更好的性能和管理性
  2. 版本控制

    • 生产环境应指定具体版本而非latest标签
    • 可通过创建.env文件设置SUPERSONIC_VERSION变量
  3. 安全加固

    • 修改默认密码(root_password/supersonic_password)
    • 考虑使用Docker secret管理敏感信息
  4. 资源监控

    • 部署后监控CPU和内存使用情况
    • 根据实际负载调整资源限制

常见问题排查

  1. 端口冲突

    • 确保宿主机15432和9080端口未被占用
    • 可修改ports映射调整端口号
  2. 启动顺序问题

    • 应用服务依赖数据库健康状态
    • 若启动失败,检查数据库日志确认连接问题
  3. DNS解析问题

    • 配置了多个公共DNS服务器(114.114.114.114, 8.8.8.8等)
    • 若网络连接问题,可调整DNS配置

通过以上配置和说明,开发者可以快速理解并部署Supersonic项目的Docker环境,为后续的数据分析应用开发奠定基础。