首页
/ OhMyForm 项目使用 Docker Compose 与 Caddy 的极简部署指南

OhMyForm 项目使用 Docker Compose 与 Caddy 的极简部署指南

2025-07-10 05:36:32作者:彭桢灵Jeremy

概述

本文将详细介绍如何使用 Docker Compose 配合 Caddy 服务器来部署 OhMyForm 项目。OhMyForm 是一个开源的在线表单构建工具,允许用户快速创建和分享各种类型的表单。通过容器化部署,可以大大简化安装和配置过程。

部署架构解析

这个 Docker Compose 配置采用了微服务架构,包含两个主要服务:

  1. Caddy 服务:作为高性能的 Web 服务器和反向代理
  2. OhMyForm 服务:提供核心的表单构建功能

两个服务通过 Docker 网络进行通信,实现了网络隔离和安全性。

网络配置详解

networks:
  web:
    external: true
  internal:
    external: false
    driver: bridge
  • web 网络:设置为外部网络,通常用于暴露服务到外部访问
  • internal 网络:内部桥接网络,用于容器间安全通信

这种网络隔离设计提高了安全性,只有 Caddy 可以同时访问内外网络。

Caddy 服务配置

caddy:
  container_name: caddy
  image: caddy:2-alpine
  restart: unless-stopped
  ports:
    - "80:80"
    - "443:443"
  volumes:
    - /data/caddy/Caddyfile:/etc/caddy/Caddyfile
    - /data/caddy/data:/data # Optional
    - /data/caddy/config:/config # Optional
  networks:
    - web
    - internal

关键配置点:

  1. 使用 Alpine 版本的 Caddy 镜像,体积小效率高
  2. 映射 80 和 443 端口,支持 HTTP 和 HTTPS
  3. 挂载配置文件和数据卷,便于持久化存储
  4. 同时加入 web 和 internal 网络

OhMyForm 服务配置

ohmyform:
  container_name: ohmyform
  image: ohmyform/ohmyform
  volumes:
    - "./data:/data"
  environment:
    CREATE_ADMIN: "TRUE"
    ADMIN_EMAIL: admin@local.host
    ADMIN_USERNAME: admin
    ADMIN_PASSWORD: admin
    DATABASE_DRIVER: sqlite
    DATABASE_URL: "sqlite:///data/data.sqlite"
    MAILER_URI: smtp://local.host
    LOGIN_NOTE: "Either login with admin:admin or create your own account to test OhMyForm"
  restart: unless-stopped
  networks:
    - internal

关键配置点:

  1. 使用官方 OhMyForm 镜像
  2. 挂载数据卷确保数据持久化
  3. 环境变量配置:
    • 自动创建管理员账户
    • 使用 SQLite 作为数据库
    • 配置邮件服务(示例中使用本地 SMTP)
  4. 仅加入 internal 网络,通过 Caddy 反向代理访问

部署步骤

  1. 创建必要的目录结构:

    mkdir -p /data/caddy
    
  2. 创建 docker-compose.yml 文件,内容如上述配置

  3. 创建 Caddy 配置文件 /data/caddy/Caddyfile,配置反向代理规则

  4. 启动服务:

    docker-compose up -d
    

安全建议

  1. 修改默认凭证:部署后立即修改管理员用户名和密码
  2. 配置 HTTPS:利用 Caddy 自动 HTTPS 功能
  3. 定期备份:定期备份挂载的数据卷
  4. 更新策略:设置容器自动更新策略

常见问题解决

  1. 端口冲突:确保主机 80 和 443 端口未被占用
  2. 权限问题:确保挂载目录有正确的读写权限
  3. 数据库问题:首次启动可能需要等待数据库初始化完成

扩展配置

对于生产环境,建议:

  1. 使用 PostgreSQL 或 MySQL 替代 SQLite
  2. 配置真实的邮件服务
  3. 设置定期备份策略
  4. 配置监控和日志收集

通过以上配置,您可以快速搭建一个功能完整的 OhMyForm 实例,适用于测试或小型生产环境。对于大型部署,建议参考官方文档进行更详细的配置优化。