首页
/ OhMyForm项目Docker Compose部署指南

OhMyForm项目Docker Compose部署指南

2025-07-10 05:34:06作者:胡唯隽

概述

OhMyForm是一个开源的在线表单构建工具,允许用户快速创建和分享各种类型的表单。本文将详细介绍如何使用Docker Compose部署OhMyForm项目,包括环境配置、服务依赖和部署注意事项。

核心服务组件

OhMyForm的Docker Compose配置包含四个主要服务组件:

  1. OhMyForm应用服务:主应用程序容器
  2. PostgreSQL数据库:存储表单数据和用户信息
  3. Redis服务:用于缓存和会话管理
  4. MailHog邮件服务:开发环境下的邮件模拟服务

详细配置解析

1. 数据库服务配置

数据库采用PostgreSQL 10的Alpine版本,这是一个轻量级的Linux发行版,适合容器化部署:

db:
  image: postgres:10-alpine
  volumes:
    - ./pg_data:/var/lib/postgresql/data
  environment:
    POSTGRES_USER: root
    POSTGRES_PASSWORD: root
    POSTGRES_DB: ohmyform

关键配置说明:

  • 数据持久化:通过卷挂载将数据库数据保存在本地pg_data目录
  • 认证信息:默认用户名和密码均为"root"
  • 数据库名称:设置为"ohmyform"

2. Redis服务配置

Redis作为缓存和会话存储服务,配置简单高效:

redis:
  image: redis

3. 邮件服务配置

开发环境使用MailHog模拟邮件服务:

mail:
  image: mailhog/mailhog
  ports:
    - "5051:8025"

MailHog提供了一个Web界面(端口8025)用于查看发送的邮件,本地映射到5051端口。

4. OhMyForm主应用配置

主应用的核心配置如下:

ohmyform:
  build: .
  environment:
    CREATE_ADMIN: "TRUE"
    MAILER_URI: smtp://mail:1025
    DATABASE_DRIVER: postgres
    DATABASE_URL: postgresql://root:root@db:5432/ohmyform
    LOGIN_NOTE: "login with root:root!"
    SECRET_KEY: 12345
  ports:
    - "5200:3000"
  depends_on:
    - db
    - redis

重要环境变量说明:

  • CREATE_ADMIN:设置为"TRUE"时,首次启动会自动创建管理员账户
  • DATABASE_*:配置数据库连接信息
  • SECRET_KEY:用于加密会话等重要数据,生产环境必须修改
  • LOGIN_NOTE:登录页面显示的提示信息

部署流程

  1. 准备环境

    • 确保已安装Docker和Docker Compose
    • 克隆OhMyForm源代码到本地
  2. 配置调整

    • 修改SECRET_KEY为强密码
    • 根据需要调整数据库认证信息
    • 生产环境应配置真实的邮件服务
  3. 启动服务

    docker-compose up -d
    
  4. 访问应用

    • 主应用:http://localhost:5200
    • 邮件界面:http://localhost:5051

生产环境注意事项

  1. 安全加固

    • 必须修改默认的SECRET_KEY
    • 更改默认的数据库用户名和密码
    • 考虑添加TLS/SSL加密
  2. 性能优化

    • 为PostgreSQL和Redis配置资源限制
    • 考虑使用连接池配置
  3. 高可用性

    • 配置数据库备份策略
    • 考虑使用云数据库服务替代本地PostgreSQL

常见问题解决

  1. 端口冲突

    • 如果5200或5051端口被占用,修改ports映射配置
  2. 数据库初始化失败

    • 检查pg_data目录权限
    • 确保PostgreSQL容器有足够的资源
  3. 邮件发送问题

    • 生产环境应替换为真实SMTP服务
    • 检查MAILER_URI配置格式

通过以上配置和说明,开发者可以快速搭建OhMyForm的开发和测试环境,为后续的表单创建和管理功能开发奠定基础。