1. Docker 部署 Supabase
1.1 获取 Supabase 代码
参考:https://supabase.com/docs/guides/self-hosting/docker
text
# 使用 git sparse checkout 获取代码
git clone --filter=blob:none --no-checkout https://github.com/supabase/supabase
cd supabase
git sparse-checkout set --cone docker && git checkout master
cd ..
# 创建新的 supabase 项目目录
mkdir supabase-project
# 目录结构应该如下:
# .
# ├── supabase
# └── supabase-project
# 复制 compose 文件到项目目录
cp -rf supabase/docker/* supabase-project
# 复制环境变量模板
cp supabase/docker/.env.example supabase-project/.env
# 切换到项目目录
cd supabase-project
1.2 配置环境变量
编辑 supabase-project/.env
文件:
text
# 编辑环境变量文件
vi .env
重要配置项:
text
############
# Secrets - 生产环境必须修改这些值
############
POSTGRES_PASSWORD=pgsqlGNOAnboioiugiugiugviugiug
JWT_SECRET=your-super-secret-jwt-token-with-at-least-32-characters-long
ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJhbm9uIiwKICAgICJpc3MiOiAic3VwYWJhc2UtZGVtbyIsCiAgICAiaWF0IjogMTY0MTc2OTIwMCwKICAgICJleHAiOiAxNzk5NTM1NjAwCn0.dc_X5iR_VP_qT0zsiyj_I_OZ2T9FtRU2BBNWN8Bu4GE
SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJzZXJ2aWNlX3JvbGUiLAogICAgImlzcyI6ICJzdXBhYmFzZS1kZW1vIiwKICAgICJpYXQiOiAxNjQxNzY5MjAwLAogICAgImV4cCI6IDE3OTk1MzU2MDAKfQ.DaYlNEoUrrEn2Ig7tqibS-PHK5vgusbcbo7X36XVt4Q
DASHBOARD_USERNAME=supabase
DASHBOARD_PASSWORD=supabaseAF98h19hto1hoihpojapjfa
############
# Database - PostgreSQL 配置
############
POSTGRES_HOST=db
POSTGRES_DB=postgres
POSTGRES_PORT=15432 # 自定义端口,避免冲突
############
# API Proxy - Kong 反向代理配置
############
KONG_HTTP_PORT=18000 # Dashboard 访问端口
KONG_HTTPS_PORT=18443
############
# Studio - Dashboard 配置
############
SUPABASE_PUBLIC_URL=http://localhost:18000 # 根据实际 IP 修改
############
# Functions - Edge Functions 配置
############
FUNCTIONS_VERIFY_JWT=false
1.3 启动服务
text
# 拉取最新镜像
docker compose pull
# 启动服务(后台模式)
docker compose up -d
# 检查服务状态
docker compose ps
# 查看服务日志
docker compose logs -f
1.4 解决常见启动问题
端口冲突问题
如果遇到端口占用错误:
text
Error: bind: address already in use
修改 docker-compose.yml
中的端口配置:
text
analytics:
ports:
- 14000:4000 # 修改为其他可用端口
CDN 访问问题
如果 Edge Functions 报错无法下载依赖,修改函数文件:
text
// 将 deno.land 替换为 cdn.jsdelivr.net
import { serve } from 'https://cdn.jsdelivr.net/gh/denoland/deno_std@0.131.0/http/server.ts'
import * as jose from 'https://cdn.jsdelivr.net/npm/jose@4.14.4/+esm'
1.5 验证部署
text
# 测试 hello function
curl http://127.0.0.1:18000/functions/v1/hello
# 访问 Dashboard
# 浏览器打开:http://127.0.0.1:18000
1.6 服务地址
-
Supabase Dashboard :
http://127.0.0.1:18000
或http://172.16.9.14:18000
-
Edge Functions 端点 :
http://127.0.0.1:18000/functions/v1/
-
PostgreSQL 端口 :
15432
1.7 服务端口映射
服务 | 内部端口 | 外部端口 | 说明 |
---|---|---|---|
Kong (API Gateway) | 8000 | 18000 | 主要 API 入口 |
Studio (Dashboard) | 3000 | 18000 | Web 管理界面 |
PostgreSQL | 5432 | 15432 | 数据库连接 |
Analytics | 4000 | 14000 | 日志分析 |
2. 连接PostgreSQL数据库
2.1查看PostgreSQL信息

2.2 使用Navicat连接
其中主机使用内网IP
端口使用映射的端口:15432
密码使用配置文件修改后的:pgsqlGNOAnboioiugiugiugviugiug
用户名特别注意添加租户信息否则报错FATAL: Tenant or user not found

例如:postgres.your-tenant-id
