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: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

相关推荐
梅孔立12 分钟前
Docker 容器网络不通:Tomcat 无法解析 MySQL、Nginx 无法反代 Tomcat 的生产级排查与治理
网络·docker·tomcat
镜子AI8 小时前
镜子AI 技术复盘:三条自动化链路上的“停止条件“设计
运维·人工智能·自动化
tianyuanwo8 小时前
NetBox 数据库详解:当“关系型数据库”被装进一个网络运维的领域模型里
运维·数据库·netbox
螺蛳粉 螺蛳粉9 小时前
第 05 篇:etcd 深入:Raft 共识、watch 机制与快照备份恢复实战(底座认知 05)
docker·云原生·容器·kubernetes·etcd·分布式存储·kube-apiserver
知已难寻10 小时前
03 · OpenStack的计算管理 Nova
运维·服务器·开发语言·云原生·云计算·openstack·开源软件
huainingning11 小时前
Windows syslog日志服务器搭建与模拟器对接
运维·服务器·智能路由器
say_fall11 小时前
【Linux系统编程】Ext 文件系统:磁盘与存储、文件与目录、现代计算机究竟如何寻找文件
linux·运维·服务器·数据库·c++
wacsii12 小时前
【Linux进程(一)】Linux 进程初探:操作系统如何管理进程?fork() 为什么返回两次?
linux·运维·服务器
相思难忘成疾12 小时前
从零搭建 Kubernetes 1.30 集群:kubeadm 部署一主多从实战(RHEL 9.3 + Docker + flannel)
linux·运维·kubernetes
PellyKoo12 小时前
【docker】cifs卷改smb密码后容器起不来的解决方法
运维·docker·容器