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
|
SOCKET_URL=http://localhost:3001 # Default: http://localhost:3001
|
||||||
SOCKER_PORT=3001 # Default: 3001
|
|
||||||
|
|||||||
@@ -67,6 +67,7 @@ EXPOSE 3000 5505
|
|||||||
|
|
||||||
# Environment variables
|
# Environment variables
|
||||||
ENV NODE_ENV=production
|
ENV NODE_ENV=production
|
||||||
|
ENV CONFIG_PATH=/app/config
|
||||||
|
|
||||||
# Start both services (Next.js web app + Socket server)
|
# Start both services (Next.js web app + Socket server)
|
||||||
CMD ["sh", "-c", "node packages/web/server.js & node packages/socket/dist/index.cjs"]
|
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({
|
const env = createEnv({
|
||||||
server: {
|
server: {
|
||||||
|
WEB_ORIGIN: z.string().optional().default("http://localhost:3000"),
|
||||||
SOCKER_PORT: z.string().optional().default("3001"),
|
SOCKER_PORT: z.string().optional().default("3001"),
|
||||||
},
|
},
|
||||||
|
|
||||||
runtimeEnv: {
|
runtimeEnv: {
|
||||||
|
WEB_ORIGIN: process.env.WEB_ORIGIN,
|
||||||
SOCKER_PORT: process.env.SOCKER_PORT,
|
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 { withGame } from "@rahoot/socket/utils/game"
|
||||||
import { Server as ServerIO } from "socket.io"
|
import { Server as ServerIO } from "socket.io"
|
||||||
|
|
||||||
const io: Server = new ServerIO()
|
const io: Server = new ServerIO({
|
||||||
|
cors: {
|
||||||
|
origin: [env.WEB_ORIGIN],
|
||||||
|
},
|
||||||
|
})
|
||||||
Config.init()
|
Config.init()
|
||||||
|
|
||||||
const registry = Registry.getInstance()
|
const registry = Registry.getInstance()
|
||||||
const port = env.SOCKER_PORT || 3001
|
const port = 3001
|
||||||
|
|
||||||
console.log(`Socket server running on port ${port}`)
|
console.log(`Socket server running on port ${port}`)
|
||||||
io.listen(Number(port))
|
io.listen(Number(port))
|
||||||
|
|||||||
@@ -2,8 +2,12 @@ import { QuizzWithId } from "@rahoot/common/types/game"
|
|||||||
import fs from "fs"
|
import fs from "fs"
|
||||||
import { resolve } from "path"
|
import { resolve } from "path"
|
||||||
|
|
||||||
|
const inContainerPath = process.env.CONFIG_PATH
|
||||||
|
|
||||||
const getPath = (path: string = "") =>
|
const getPath = (path: string = "") =>
|
||||||
resolve(process.cwd(), "../../config", path)
|
inContainerPath
|
||||||
|
? resolve(inContainerPath, path)
|
||||||
|
: resolve(process.cwd(), "../../config", path)
|
||||||
|
|
||||||
class Config {
|
class Config {
|
||||||
static init() {
|
static init() {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "next dev",
|
"dev": "next dev",
|
||||||
"build": "next build",
|
"build": "next build",
|
||||||
"start": "node .next/standalone/packages/web/server.js",
|
"start": "next start",
|
||||||
"lint": "eslint"
|
"lint": "eslint"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|||||||
Reference in New Issue
Block a user