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:
parent
f156941cd8
commit
d3dd5f2dcb
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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"]
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue