diff --git a/broker/Dockerfile b/broker/Dockerfile new file mode 100644 index 0000000..830b432 --- /dev/null +++ b/broker/Dockerfile @@ -0,0 +1,7 @@ +FROM node:21-alpine +WORKDIR /home/app +COPY package.json pnpm-lock.yaml ./ +RUN npm install -g pnpm && pnpm install --prod --frozen-lockfile +COPY ./dist /home/app/dist +EXPOSE ${PORT} +CMD ["node", "dist/broker/src/index.js"] \ No newline at end of file diff --git a/broker/package.json b/broker/package.json index 3fa0b85..f16bc0d 100644 --- a/broker/package.json +++ b/broker/package.json @@ -26,7 +26,8 @@ "compile": "tsc", "build": "ts-node scripts/build.ts", "create_db": "cd scripts && ts-node create_database.ts", - "build_all": "npm run compile && npm run build && npm run create_db" + "build_all": "npm run compile && npm run build && npm run create_db", + "docker-build": "node scripts/prepare_docker.js && docker build -t litlyx-broker ." }, "keywords": [], "author": "Emily", diff --git a/broker/scripts/prepare_docker.js b/broker/scripts/prepare_docker.js new file mode 100644 index 0000000..5d29674 --- /dev/null +++ b/broker/scripts/prepare_docker.js @@ -0,0 +1,7 @@ + +const child = require('child_process'); + +const p = child.exec('pnpm run compile && pnpm run build && pnpm run create_db'); + +p.stdout.on('data', (e) => { console.log(e.toString()); }); +p.stderr.on('data', (e) => { console.log(e.toString()); }); \ No newline at end of file diff --git a/broker/src/Controller.ts b/broker/src/Controller.ts index 9b4fd30..750c560 100644 --- a/broker/src/Controller.ts +++ b/broker/src/Controller.ts @@ -5,13 +5,14 @@ import EmailService from '@services/EmailService'; import { requireEnv } from "../../shared/utilts/requireEnv"; import { TProjectLimit } from "@schema/ProjectsLimits"; - -EmailService.createTransport( - requireEnv('EMAIL_SERVICE'), - requireEnv('EMAIL_HOST'), - requireEnv('EMAIL_USER'), - requireEnv('EMAIL_PASS'), -); +if (process.env.EMAIL_SERVICE) { + EmailService.createTransport( + requireEnv('EMAIL_SERVICE'), + requireEnv('EMAIL_HOST'), + requireEnv('EMAIL_USER'), + requireEnv('EMAIL_PASS'), + ); +} export async function checkLimitsForEmail(projectCounts: TProjectLimit) { @@ -22,7 +23,7 @@ export async function checkLimitsForEmail(projectCounts: TProjectLimit) { if (!project) return; const owner = await UserModel.findById(project.owner); if (!owner) return; - await EmailService.sendLimitEmail50(owner.email); + if (process.env.EMAIL_SERVICE) await EmailService.sendLimitEmail50(owner.email); await LimitNotifyModel.updateOne({ project_id: projectCounts._id }, { limit1: true, limit2: false, limit3: false }, { upsert: true }); } diff --git a/broker/src/StreamLoopController.ts b/broker/src/StreamLoopController.ts index 4210fe5..5b3a04d 100644 --- a/broker/src/StreamLoopController.ts +++ b/broker/src/StreamLoopController.ts @@ -22,6 +22,7 @@ export async function startStreamLoop() { delay: { base: 100, empty: 5000 }, readBlock: 2500 }, processStreamEvent); + } diff --git a/dashboard/Dockerfile b/dashboard/Dockerfile new file mode 100644 index 0000000..918a7a1 --- /dev/null +++ b/dashboard/Dockerfile @@ -0,0 +1,7 @@ +FROM node:21-alpine +WORKDIR /home/app +COPY package.json pnpm-lock.yaml ./ +RUN npm install -g pnpm && pnpm install --prod --frozen-lockfile +COPY ./.output /home/app/dist +EXPOSE ${PORT} +CMD ["node", "dist/server/index.mjs"] \ No newline at end of file diff --git a/dashboard/package.json b/dashboard/package.json index b928b17..fc341c9 100644 --- a/dashboard/package.json +++ b/dashboard/package.json @@ -8,7 +8,8 @@ "generate": "nuxt generate", "preview": "nuxt preview", "postinstall": "nuxt prepare", - "test": "vitest" + "test": "vitest", + "docker-build": "pnpm run build && docker build -t litlyx-dashboard ." }, "dependencies": { "@nuxtjs/tailwindcss": "^6.12.0",