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

相关推荐
qing2222222214 小时前
Ubuntu设置程序开机自启动:基于.service文件实现
linux·运维·ubuntu
遇见火星15 小时前
CentOS 7 停更后如何配置 YUM 源?(Vault、EPEL、第三方镜像完整指南)
linux·运维·centos
码农阿豪15 小时前
金仓KES vs. 达梦DM:全面对比解析迁移、运维与授权成本
运维·数据库·国产
BS_Li15 小时前
【Linux系统编程】进程概念(三)进程状态
linux·运维·服务器
ejinxian15 小时前
Linux 虚拟化技术 KVM/ESXI/Docker
linux·运维·docker·qemu·openvz
z2023050816 小时前
linux之arm SMMUv3 故障和错误(4)
linux·运维·arm开发
是孑然呀16 小时前
【钉钉多元表格(自动化)】钉钉群根据表格 自动推送当天值日生信息
运维·自动化·钉钉
逐风&者16 小时前
CentsOS 7 “Could not resolve host: mirrorlist.centos.org; 未知的错误”问题解决
linux·运维·centos
路由侠内网穿透.17 小时前
本地部署网站流量分析工具 Matomo 并实现外部访问
运维·服务器·远程工作
dnpao17 小时前
在服务器已有目录中部署 Git 仓库
运维·服务器·git