首页
/ OhMyForm项目基于Docker和Nginx的部署指南

OhMyForm项目基于Docker和Nginx的部署指南

2025-07-10 05:38:24作者:卓炯娓

OhMyForm是一个开源的在线表单构建工具,本文将详细介绍如何使用Docker Compose和Nginx来部署完整的OhMyForm应用系统。

系统架构概述

该部署方案采用了微服务架构,包含以下核心组件:

  1. PostgreSQL数据库服务:存储所有表单数据和用户信息
  2. OhMyForm API服务:提供GraphQL接口处理业务逻辑
  3. OhMyForm UI服务:提供用户界面
  4. Nginx反向代理:作为前端接入层,统一处理请求分发

详细配置解析

数据库服务配置

db:
  image: postgres:10-alpine
  volumes:
    - ./pg_data:/var/lib/postgresql/data
  environment:
    POSTGRES_USER: root
    POSTGRES_PASSWORD: root
    POSTGRES_DB: ohmyform
  restart: unless-stopped
  • 使用PostgreSQL 10的Alpine版本,体积小巧
  • 通过volume挂载实现数据持久化
  • 预设了数据库用户、密码和数据库名称
  • 配置了自动重启策略

Nginx服务配置

nginx:
  image: nginx:alpine
  volumes:
    - "./default.conf:/etc/nginx/conf.d/default.conf"
  ports:
    - "8080:80"
  depends_on:
    - ui
    - api
  restart: unless-stopped
  • 使用Nginx Alpine镜像
  • 挂载自定义Nginx配置文件
  • 将容器80端口映射到宿主机8080端口
  • 依赖UI和API服务
  • 配置了自动重启策略

UI服务配置

ui:
  image: ohmyform/ui
  environment:
    SERVER_ENDPOINT: http://api:5000/graphql
    PORT: 5000
  restart: unless-stopped
  • 使用官方UI镜像
  • 配置API服务端点指向API容器
  • 设置服务端口为5000
  • 配置了自动重启策略

API服务配置

api:
  image: ohmyform/api
  environment:
    CREATE_ADMIN: "true"
    ADMIN_EMAIL: admin@local.host
    ADMIN_USERNAME: admin
    ADMIN_PASSWORD: admin
    DATABASE_DRIVER: postgres
    DATABASE_URL: postgresql://root:root@db:5432/ohmyform
    MAILER_URI: smtp://local.host
    REDIS_URL: redis://redis
    PORT: 5000
  links:
    - db
  depends_on:
    - db
  restart: unless-stopped
  • 使用官方API镜像
  • 自动创建管理员账户(用户名/密码均为admin)
  • 配置数据库连接信息
  • 设置邮件服务(示例中使用本地SMTP)
  • 配置Redis连接
  • 设置服务端口为5000
  • 显式链接到数据库服务
  • 配置了自动重启策略

部署步骤详解

  1. 准备环境

    • 确保已安装Docker和Docker Compose
    • 创建项目目录并进入
  2. 配置文件准备

    • 创建docker-compose.yml文件,内容如上
    • 准备Nginx配置文件default.conf(需自行配置路由规则)
  3. 启动服务

    docker-compose up -d
    
  4. 验证部署

    • 访问http://localhost:8080应能看到OhMyForm界面
    • 使用admin/admin登录管理系统

生产环境建议

  1. 安全加固

    • 修改默认管理员凭据
    • 配置HTTPS证书
    • 使用更复杂的数据库密码
  2. 性能优化

    • 根据负载调整服务资源限制
    • 配置数据库连接池参数
    • 启用Redis缓存
  3. 高可用考虑

    • 配置数据库备份策略
    • 考虑多节点部署方案
    • 设置监控告警系统

常见问题排查

  1. 服务启动失败

    • 检查端口冲突
    • 查看容器日志docker-compose logs [service]
  2. 数据库连接问题

    • 验证数据库服务是否正常启动
    • 检查连接字符串配置
  3. 管理员账户未创建

    • 确保CREATE_ADMIN环境变量设置为"true"
    • 检查API服务日志中的账户创建信息

通过以上配置和说明,您应该能够成功部署一个功能完整的OhMyForm实例。根据实际需求,您可以进一步调整配置参数以满足特定的业务场景。