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,
|
settings.SURREAL_DATABASE,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
await self._init_schema()
|
||||||
|
|
||||||
self._connected = True
|
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:
|
async def disconnect(self) -> None:
|
||||||
"""
|
"""
|
||||||
Close SurrealDB connection
|
Close SurrealDB connection
|
||||||
|
|
|
||||||
|
|
@ -22,9 +22,9 @@ services:
|
||||||
restart: always
|
restart: always
|
||||||
|
|
||||||
surrealdb:
|
surrealdb:
|
||||||
image: surrealdb/surrealdb:latest
|
image: surrealdb/surrealdb:v3.0.5
|
||||||
container_name: chat-surrealdb
|
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:
|
environment:
|
||||||
- SURREAL_USER=root
|
- SURREAL_USER=root
|
||||||
- SURREAL_PASS=${SURREAL_PASSWORD}
|
- SURREAL_PASS=${SURREAL_PASSWORD}
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,18 @@
|
||||||
# ©AngelaMos | 2025
|
# ©AngelaMos | 2026
|
||||||
# Development Vite Dockerfile
|
# vite.docker
|
||||||
# HMR dev server, volume mounts for code
|
|
||||||
|
|
||||||
FROM node:22-alpine
|
FROM node:22-alpine
|
||||||
|
|
||||||
|
RUN corepack enable
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
COPY frontend/package*.json ./
|
COPY frontend/package.json frontend/pnpm-lock.yaml ./
|
||||||
|
|
||||||
RUN npm ci
|
RUN pnpm install --frozen-lockfile
|
||||||
|
|
||||||
COPY frontend/ .
|
COPY frontend/ .
|
||||||
|
|
||||||
EXPOSE 5173
|
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
|
# ©AngelaMos | 2026
|
||||||
# Production Vite Dockerfile
|
# vite.docker
|
||||||
# Multi-stage: build with node, serve with nginx
|
|
||||||
|
|
||||||
FROM node:22-alpine AS builder
|
FROM node:22-alpine AS builder
|
||||||
|
|
||||||
|
RUN corepack enable
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
COPY frontend/package*.json ./
|
COPY frontend/package.json frontend/pnpm-lock.yaml ./
|
||||||
|
|
||||||
RUN npm ci
|
RUN pnpm install --frozen-lockfile
|
||||||
|
|
||||||
COPY frontend/ .
|
COPY frontend/ .
|
||||||
|
|
||||||
RUN npm run build
|
RUN pnpm run build
|
||||||
|
|
||||||
FROM nginx:alpine
|
FROM nginx:alpine
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ services:
|
||||||
volumes:
|
volumes:
|
||||||
- postgres_dev_data:/var/lib/postgresql/data
|
- postgres_dev_data:/var/lib/postgresql/data
|
||||||
ports:
|
ports:
|
||||||
- "${POSTGRES_HOST_PORT:-5432}:5432"
|
- "${POSTGRES_HOST_PORT:-54332}:5432"
|
||||||
networks:
|
networks:
|
||||||
- chat_network_dev
|
- chat_network_dev
|
||||||
healthcheck:
|
healthcheck:
|
||||||
|
|
@ -23,17 +23,17 @@ services:
|
||||||
retries: 5
|
retries: 5
|
||||||
|
|
||||||
surrealdb:
|
surrealdb:
|
||||||
image: surrealdb/surrealdb:latest
|
image: surrealdb/surrealdb:v3.0.5
|
||||||
container_name: chat-surrealdb-dev
|
container_name: chat-surrealdb-dev
|
||||||
user: "0:0"
|
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:
|
environment:
|
||||||
- SURREAL_USER=root
|
- SURREAL_USER=root
|
||||||
- SURREAL_PASS=${SURREAL_PASSWORD}
|
- SURREAL_PASS=${SURREAL_PASSWORD}
|
||||||
volumes:
|
volumes:
|
||||||
- surreal_dev_data:/data
|
- surreal_dev_data:/data
|
||||||
ports:
|
ports:
|
||||||
- "${SURREAL_HOST_PORT:-8001}:8000"
|
- "${SURREAL_HOST_PORT:-7781}:8000"
|
||||||
networks:
|
networks:
|
||||||
- chat_network_dev
|
- chat_network_dev
|
||||||
healthcheck:
|
healthcheck:
|
||||||
|
|
@ -55,7 +55,7 @@ services:
|
||||||
volumes:
|
volumes:
|
||||||
- redis_dev_data:/data
|
- redis_dev_data:/data
|
||||||
ports:
|
ports:
|
||||||
- "${REDIS_HOST_PORT:-6379}:6379"
|
- "${REDIS_HOST_PORT:-43434}:6379"
|
||||||
networks:
|
networks:
|
||||||
- chat_network_dev
|
- chat_network_dev
|
||||||
healthcheck:
|
healthcheck:
|
||||||
|
|
@ -82,7 +82,7 @@ services:
|
||||||
REDIS_URL: ${REDIS_URL:-redis://redis:6379}
|
REDIS_URL: ${REDIS_URL:-redis://redis:6379}
|
||||||
RP_ID: ${RP_ID:-localhost}
|
RP_ID: ${RP_ID:-localhost}
|
||||||
RP_NAME: ${RP_NAME:-Encrypted P2P Chat}
|
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}
|
CORS_ORIGINS: ${CORS_ORIGINS}
|
||||||
volumes:
|
volumes:
|
||||||
- ./backend:/app
|
- ./backend:/app
|
||||||
|
|
@ -98,7 +98,7 @@ services:
|
||||||
networks:
|
networks:
|
||||||
- chat_network_dev
|
- chat_network_dev
|
||||||
ports:
|
ports:
|
||||||
- "${BACKEND_HOST_PORT:-8000}:8000"
|
- "${BACKEND_HOST_PORT:-30200}:8000"
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
frontend:
|
frontend:
|
||||||
|
|
@ -118,14 +118,14 @@ services:
|
||||||
networks:
|
networks:
|
||||||
- chat_network_dev
|
- chat_network_dev
|
||||||
ports:
|
ports:
|
||||||
- "${FRONTEND_DEV_PORT:-5173}:5173"
|
- "${FRONTEND_DEV_PORT:-34343}:5173"
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
nginx:
|
nginx:
|
||||||
image: nginx:alpine
|
image: nginx:alpine
|
||||||
container_name: chat-nginx-dev
|
container_name: chat-nginx-dev
|
||||||
ports:
|
ports:
|
||||||
- "${NGINX_HTTP_PORT:-80}:80"
|
- "${NGINX_HTTP_PORT:-3234}:80"
|
||||||
volumes:
|
volumes:
|
||||||
- ./conf/nginx/dev.nginx:/etc/nginx/nginx.conf:ro
|
- ./conf/nginx/dev.nginx:/etc/nginx/nginx.conf:ro
|
||||||
- ./conf/nginx/http.conf:/etc/nginx/http.conf:ro
|
- ./conf/nginx/http.conf:/etc/nginx/http.conf:ro
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue