Supabase 是一个开源的 Firebase 替代品,提供了数据库、身份验证、存储等后端功能。通过 Docker,我们可以轻松地在本地或私有服务器上部署 Supabase,完全掌控数据和服务配置。本文将带您一步步实现 Supabase 的 Docker 自托管,并分享如何将其无缝集成到您的开发流程中。
准备工作
首先,确保你的系统已安装 Docker 和 Docker Compose。然后,克隆 Supabase 的官方仓库:
# 克隆 Supabase 仓库
git clone --depth 1 https://github.com/supabase/supabase
配置环境
进入 Supabase 的 Docker 目录,并复制示例环境文件:
# 进入docker目录
cd supabase/docker
# 复制示例环境文件
cp .env.example .env
# 编辑配置文件(按需修改)
nano .env
接下来,编辑 .env 文件以配置环境变量。关键配置项:
# 数据库配置
POSTGRES_PASSWORD=your_strong_password # 设置一个强密码
# JWT 配置
JWT_SECRET=your_jwt_secret_key # 设置一个安全的 JWT 密钥
# API 密钥配置
ANON_KEY= # 匿名访问密钥
SERVICE_ROLE_KEY= # 服务角色密钥
# Dashboard 配置
DASHBOARD_USERNAME=supabase # Dashboard 用户名
DASHBOARD_PASSWORD= # Dashboard 密码
# 服务 URL 配置
SITE_URL=http://localhost:3000 # Supabase Studio 地址
API_EXTERNAL_URL=http://localhost:8000 # API 外部访问地址
# 邮件认证配置
ENABLE_EMAIL_SIGNUP=true # 启用邮件注册
ENABLE_EMAIL_AUTOCONFIRM=false # 禁用自动确认邮件
SMTP_ADMIN_EMAIL= # 管理员邮箱
SMTP_HOST=smtp.feishu.cn # SMTP 服务器地址
SMTP_PORT=465 # SMTP 端口
SMTP_USER= # SMTP 用户名
SMTP_PASS= # SMTP 密码
SMTP_SENDER_NAME= # 发件人名称
# 其他配置
ENABLE_ANONYMOUS_USERS=false # 禁用匿名用户
SUPABASE_PUBLIC_URL=http://localhost:8000 # Supabase 公共 URL
OPENAI_API_KEY= # OpenAI API 密钥(可选)
POOLER_TENANT_ID=your-tenant-id
启动服务
配置完成后,可以通过以下命令启动 Supabase 服务:
cd supabase/docker
# 使用自动初始化脚本(首次运行)
docker compose -f docker-compose.yml up
# 或手动初始化(推荐生产环境)
docker compose pull
docker compose up -d
- 自动初始化脚本:适合首次运行,会自动拉取镜像并启动服务。
- 手动初始化:推荐用于生产环境,先拉取镜像再启动服务,确保稳定性。
所有服务启动后,您可以看到它们在后台运行:docker compose ps
所有服务都应有状态running (healthy)。如果您看到的状态为created但不是running,请尝试使用 手动启动该服务docker compose start 。
## 验证服务
访问以下端点确认运行状态:
API: http://localhost:8000/rest/v1/
Studio: http://localhost:8000
Auth: http://localhost:8000/auth/v1/