mirror of
https://github.com/randyjc/Rahoot.git
synced 2026-03-13 20:15:35 +01:00
fix(docker): fix config files reading & add compose file
This commit is contained in:
@@ -1,2 +1,2 @@
|
||||
WEB_ORIGIN=http://localhost:3000 # Default: http://localhost:3000, for allow all origins use '*'
|
||||
SOCKET_URL=http://localhost:3001 # Default: http://localhost:3001
|
||||
SOCKER_PORT=3001 # Default: 3001
|
||||
|
||||
@@ -67,6 +67,7 @@ EXPOSE 3000 5505
|
||||
|
||||
# Environment variables
|
||||
ENV NODE_ENV=production
|
||||
ENV CONFIG_PATH=/app/config
|
||||
|
||||
# Start both services (Next.js web app + Socket server)
|
||||
CMD ["sh", "-c", "node packages/web/server.js & node packages/socket/dist/index.cjs"]
|
||||
|
||||
13
compose.yml
Normal file
13
compose.yml
Normal file
@@ -0,0 +1,13 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
rahoot:
|
||||
image: rahoot
|
||||
ports:
|
||||
- "3000:3000"
|
||||
- "3001:3001"
|
||||
volumes:
|
||||
- ./config:/app/config # Path to your game config
|
||||
environment:
|
||||
- WEB_ORIGIN=http://localhost:3000
|
||||
- SOCKET_URL=http://localhost:3001
|
||||
@@ -1,4 +0,0 @@
|
||||
{
|
||||
"managerPassword": "PASSWORD",
|
||||
"music": true
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
{
|
||||
"subject": "Example Quizz",
|
||||
"questions": [
|
||||
{
|
||||
"question": "What is good answer ?",
|
||||
"answers": [
|
||||
"No",
|
||||
"Good answer",
|
||||
"No",
|
||||
"No"
|
||||
],
|
||||
"solution": 1,
|
||||
"cooldown": 5,
|
||||
"time": 15
|
||||
},
|
||||
{
|
||||
"question": "What is good answer with image ?",
|
||||
"answers": [
|
||||
"No",
|
||||
"No",
|
||||
"No",
|
||||
"Good answer"
|
||||
],
|
||||
"image": "https://placehold.co/600x400.png",
|
||||
"solution": 3,
|
||||
"cooldown": 5,
|
||||
"time": 20
|
||||
},
|
||||
{
|
||||
"question": "What is good answer with two answers ?",
|
||||
"answers": [
|
||||
"Good answer",
|
||||
"No"
|
||||
],
|
||||
"image": "https://placehold.co/600x400.png",
|
||||
"solution": 0,
|
||||
"cooldown": 5,
|
||||
"time": 20
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -3,10 +3,12 @@ import { z } from "zod/v4"
|
||||
|
||||
const env = createEnv({
|
||||
server: {
|
||||
WEB_ORIGIN: z.string().optional().default("http://localhost:3000"),
|
||||
SOCKER_PORT: z.string().optional().default("3001"),
|
||||
},
|
||||
|
||||
runtimeEnv: {
|
||||
WEB_ORIGIN: process.env.WEB_ORIGIN,
|
||||
SOCKER_PORT: process.env.SOCKER_PORT,
|
||||
},
|
||||
})
|
||||
|
||||
@@ -7,11 +7,15 @@ import Registry from "@rahoot/socket/services/registry"
|
||||
import { withGame } from "@rahoot/socket/utils/game"
|
||||
import { Server as ServerIO } from "socket.io"
|
||||
|
||||
const io: Server = new ServerIO()
|
||||
const io: Server = new ServerIO({
|
||||
cors: {
|
||||
origin: [env.WEB_ORIGIN],
|
||||
},
|
||||
})
|
||||
Config.init()
|
||||
|
||||
const registry = Registry.getInstance()
|
||||
const port = env.SOCKER_PORT || 3001
|
||||
const port = 3001
|
||||
|
||||
console.log(`Socket server running on port ${port}`)
|
||||
io.listen(Number(port))
|
||||
|
||||
@@ -2,8 +2,12 @@ import { QuizzWithId } from "@rahoot/common/types/game"
|
||||
import fs from "fs"
|
||||
import { resolve } from "path"
|
||||
|
||||
const inContainerPath = process.env.CONFIG_PATH
|
||||
|
||||
const getPath = (path: string = "") =>
|
||||
resolve(process.cwd(), "../../config", path)
|
||||
inContainerPath
|
||||
? resolve(inContainerPath, path)
|
||||
: resolve(process.cwd(), "../../config", path)
|
||||
|
||||
class Config {
|
||||
static init() {
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
"build": "next build",
|
||||
"start": "node .next/standalone/packages/web/server.js",
|
||||
"start": "next start",
|
||||
"lint": "eslint"
|
||||
},
|
||||
"dependencies": {
|
||||
|
||||
Reference in New Issue
Block a user