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

相关推荐
Wy_编程9 分钟前
Linux文件相关命令
linux·运维
Viking_bird18 分钟前
centos 7.5 + Hadoop 3.2.4 集群搭建
linux·运维·服务器·hadoop·centos
黑客影儿2 小时前
Kali Linux 环境中的系统配置文件与用户配置文件大全
linux·运维·程序人生·安全·网络安全·系统安全·学习方法
岚天start2 小时前
Linux系统网络排查工具总结
linux·运维·网络·监控·扫描·连通性·流量
Lovyk3 小时前
基于 Ansible 与 Jinja2 模板的 LNMP 环境及 WordPress 自动化部署实践
linux·运维·服务器·自动化·ansible
知白守黑2674 小时前
Linux磁盘阵列
linux·运维·服务器
维尔切5 小时前
Linux中基于Centos7使用lamp架构搭建个人论坛(wordpress)
linux·运维·架构
__lll_6 小时前
手把手教你用 Docker 部署 Vue 项目(含国内镜像加速 + 踩坑指南)
docker
丘大梨6 小时前
QT 基础聊天应用项目文档
运维·数据库·系统架构
怀刃7 小时前
C# 内存监控怎么定位问题
运维