Docker 部署 Supabase并连接

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:18000http://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

相关推荐
虎头金猫2 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
分布式存储与RustFS2 天前
MinIO 官方 Docker 镜像被移除:依赖它的项目该怎么办
docker·云原生·devops·对象存储·minio·分布式存储
AI职业加油站2 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
此冬歌咏2 天前
K8s 节点故障实战:优雅驱逐 31 秒,硬故障 331 秒,以及那个永远 Pending 的 Pod
运维·k8s
玉&心2 天前
通过Arthas在线诊断K8S中的内存及JVM等使用情况
docker·k8s·arthas
xing-xing2 天前
Docker容器中Nginx站点根目录网页配置访问
nginx·docker
-梅2 天前
linux(8) 软硬链接
linux·运维·服务器
赵文宇(温玉)2 天前
CoreDNS的hosts插件的缺行配置导致k8s集群异常
容器·kubernetes·rancher
guo_wen_qiang2 天前
上传本地镜像到harbor中
docker·容器·持续部署
张洛闻Eren2 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github