fix(encrypted-p2p-chat): repair dev-up after surrealdb 3.x and pnpm migration

- Switch frontend Dockerfiles to pnpm via corepack (project uses pnpm-lock.yaml)
- Pin SurrealDB to v3.0.5 and switch datastore URL from `file:` to `rocksdb:`
- Add idempotent SurrealDB schema bootstrap on connect to prevent NotFoundError on first SELECT against schemaless tables in 3.x
This commit is contained in:
CarterPerez-dev 2026-04-29 01:46:36 -04:00
parent f156941cd8
commit d3dd5f2dcb
5 changed files with 39 additions and 23 deletions

View File

@ -59,8 +59,22 @@ class SurrealDBManager:
settings.SURREAL_DATABASE,
)
await self._init_schema()
self._connected = True
async def _init_schema(self) -> None:
"""
Define tables used by the application so empty SELECTs do not error
"""
schema = """
DEFINE TABLE IF NOT EXISTS rooms SCHEMALESS;
DEFINE TABLE IF NOT EXISTS room_participants SCHEMALESS;
DEFINE TABLE IF NOT EXISTS messages SCHEMALESS;
DEFINE TABLE IF NOT EXISTS presence SCHEMALESS;
"""
await self.db.query(schema)
async def disconnect(self) -> None:
"""
Close SurrealDB connection

View File

@ -22,9 +22,9 @@ services:
restart: always
surrealdb:
image: surrealdb/surrealdb:latest
image: surrealdb/surrealdb:v3.0.5
container_name: chat-surrealdb
command: start --log trace --user root --pass ${SURREAL_PASSWORD:?SURREAL_PASSWORD required} file:/data/database.db
command: start --log trace --user root --pass ${SURREAL_PASSWORD:?SURREAL_PASSWORD required} rocksdb:/data/database.db
environment:
- SURREAL_USER=root
- SURREAL_PASS=${SURREAL_PASSWORD}

View File

@ -1,17 +1,18 @@
# ©AngelaMos | 2025
# Development Vite Dockerfile
# HMR dev server, volume mounts for code
# ©AngelaMos | 2026
# vite.docker
FROM node:22-alpine
RUN corepack enable
WORKDIR /app
COPY frontend/package*.json ./
COPY frontend/package.json frontend/pnpm-lock.yaml ./
RUN npm ci
RUN pnpm install --frozen-lockfile
COPY frontend/ .
EXPOSE 5173
CMD ["npm", "run", "dev", "--", "--host", "0.0.0.0"]
CMD ["pnpm", "run", "dev", "--", "--host", "0.0.0.0"]

View File

@ -1,18 +1,19 @@
# ©AngelaMos | 2025
# Production Vite Dockerfile
# Multi-stage: build with node, serve with nginx
# ©AngelaMos | 2026
# vite.docker
FROM node:22-alpine AS builder
RUN corepack enable
WORKDIR /app
COPY frontend/package*.json ./
COPY frontend/package.json frontend/pnpm-lock.yaml ./
RUN npm ci
RUN pnpm install --frozen-lockfile
COPY frontend/ .
RUN npm run build
RUN pnpm run build
FROM nginx:alpine

View File

@ -13,7 +13,7 @@ services:
volumes:
- postgres_dev_data:/var/lib/postgresql/data
ports:
- "${POSTGRES_HOST_PORT:-5432}:5432"
- "${POSTGRES_HOST_PORT:-54332}:5432"
networks:
- chat_network_dev
healthcheck:
@ -23,17 +23,17 @@ services:
retries: 5
surrealdb:
image: surrealdb/surrealdb:latest
image: surrealdb/surrealdb:v3.0.5
container_name: chat-surrealdb-dev
user: "0:0"
command: start --log trace --user root --pass ${SURREAL_PASSWORD:?SURREAL_PASSWORD required} file:/data/database.db
command: start --log trace --user root --pass ${SURREAL_PASSWORD:?SURREAL_PASSWORD required} rocksdb:/data/database.db
environment:
- SURREAL_USER=root
- SURREAL_PASS=${SURREAL_PASSWORD}
volumes:
- surreal_dev_data:/data
ports:
- "${SURREAL_HOST_PORT:-8001}:8000"
- "${SURREAL_HOST_PORT:-7781}:8000"
networks:
- chat_network_dev
healthcheck:
@ -55,7 +55,7 @@ services:
volumes:
- redis_dev_data:/data
ports:
- "${REDIS_HOST_PORT:-6379}:6379"
- "${REDIS_HOST_PORT:-43434}:6379"
networks:
- chat_network_dev
healthcheck:
@ -82,7 +82,7 @@ services:
REDIS_URL: ${REDIS_URL:-redis://redis:6379}
RP_ID: ${RP_ID:-localhost}
RP_NAME: ${RP_NAME:-Encrypted P2P Chat}
RP_ORIGIN: ${RP_ORIGIN:-http://localhost:82}
RP_ORIGIN: ${RP_ORIGIN:-http://localhost:32342}
CORS_ORIGINS: ${CORS_ORIGINS}
volumes:
- ./backend:/app
@ -98,7 +98,7 @@ services:
networks:
- chat_network_dev
ports:
- "${BACKEND_HOST_PORT:-8000}:8000"
- "${BACKEND_HOST_PORT:-30200}:8000"
restart: unless-stopped
frontend:
@ -118,14 +118,14 @@ services:
networks:
- chat_network_dev
ports:
- "${FRONTEND_DEV_PORT:-5173}:5173"
- "${FRONTEND_DEV_PORT:-34343}:5173"
restart: unless-stopped
nginx:
image: nginx:alpine
container_name: chat-nginx-dev
ports:
- "${NGINX_HTTP_PORT:-80}:80"
- "${NGINX_HTTP_PORT:-3234}:80"
volumes:
- ./conf/nginx/dev.nginx:/etc/nginx/nginx.conf:ro
- ./conf/nginx/http.conf:/etc/nginx/http.conf:ro