Spaces:
Running
Running
MTayyaBH commited on
Commit ·
3de52b9
1
Parent(s): d714fad
Run Nest microservices in Docker Space
Browse files- Dockerfile +9 -3
- package.json +89 -0
- start-services.sh +23 -0
Dockerfile
CHANGED
|
@@ -1,10 +1,16 @@
|
|
| 1 |
-
FROM
|
| 2 |
|
| 3 |
WORKDIR /app
|
| 4 |
|
| 5 |
-
COPY
|
|
|
|
| 6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 7 |
ENV PORT=7860
|
| 8 |
EXPOSE 7860
|
| 9 |
|
| 10 |
-
CMD ["
|
|
|
|
| 1 |
+
FROM node:20-bookworm-slim
|
| 2 |
|
| 3 |
WORKDIR /app
|
| 4 |
|
| 5 |
+
COPY package.json /app/package.json
|
| 6 |
+
RUN npm install --omit=dev
|
| 7 |
|
| 8 |
+
COPY . /app
|
| 9 |
+
COPY start-services.sh /app/start-services.sh
|
| 10 |
+
RUN chmod +x /app/start-services.sh
|
| 11 |
+
|
| 12 |
+
ENV NODE_ENV=production
|
| 13 |
ENV PORT=7860
|
| 14 |
EXPOSE 7860
|
| 15 |
|
| 16 |
+
CMD ["/app/start-services.sh"]
|
package.json
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "chatbolt-backend",
|
| 3 |
+
"version": "1.0.0",
|
| 4 |
+
"private": true,
|
| 5 |
+
"scripts": {
|
| 6 |
+
"build": "nest build",
|
| 7 |
+
"build:all": "nest build api-gateway && nest build agent-service && nest build db-connector && nest build knowledge-service",
|
| 8 |
+
"start:gateway": "nest start api-gateway",
|
| 9 |
+
"start:agent": "nest start agent-service",
|
| 10 |
+
"start:db": "nest start db-connector",
|
| 11 |
+
"start:knowledge": "nest start knowledge-service",
|
| 12 |
+
"start:dev:gateway": "nest start --watch api-gateway",
|
| 13 |
+
"start:dev:agent": "nest start --watch agent-service",
|
| 14 |
+
"start:dev:db": "nest start --watch db-connector",
|
| 15 |
+
"start:dev:knowledge": "nest start --watch knowledge-service",
|
| 16 |
+
"start:dev": "concurrently \"npm run start:dev:gateway\" \"npm run start:dev:agent\" \"npm run start:dev:db\" \"npm run start:dev:knowledge\"",
|
| 17 |
+
"start:debug:gateway": "nest start --debug=9229 api-gateway",
|
| 18 |
+
"start:debug:agent": "nest start --debug=9230 agent-service",
|
| 19 |
+
"start:debug:db": "nest start --debug=9231 db-connector",
|
| 20 |
+
"start:debug:knowledge": "nest start --debug=9232 knowledge-service",
|
| 21 |
+
"start:debug": "concurrently \"npm run start:debug:gateway\" \"npm run start:debug:agent\" \"npm run start:debug:db\" \"npm run start:debug:knowledge\"",
|
| 22 |
+
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
|
| 23 |
+
"test": "jest"
|
| 24 |
+
},
|
| 25 |
+
"dependencies": {
|
| 26 |
+
"@anthropic-ai/sdk": "^0.78.0",
|
| 27 |
+
"@langchain/anthropic": "^1.3.26",
|
| 28 |
+
"@langchain/core": "^1.1.40",
|
| 29 |
+
"@langchain/groq": "^1.2.0",
|
| 30 |
+
"@langchain/openai": "^1.4.4",
|
| 31 |
+
"@nestjs/axios": "^4.0.1",
|
| 32 |
+
"@nestjs/common": "^10.0.0",
|
| 33 |
+
"@nestjs/config": "^3.0.0",
|
| 34 |
+
"@nestjs/core": "^10.0.0",
|
| 35 |
+
"@nestjs/jwt": "^10.0.0",
|
| 36 |
+
"@nestjs/microservices": "^10.0.0",
|
| 37 |
+
"@nestjs/passport": "^10.0.0",
|
| 38 |
+
"@nestjs/platform-express": "^10.0.0",
|
| 39 |
+
"@nestjs/platform-socket.io": "^10.0.0",
|
| 40 |
+
"@nestjs/swagger": "^7.0.0",
|
| 41 |
+
"@nestjs/typeorm": "^10.0.0",
|
| 42 |
+
"@nestjs/websockets": "^10.0.0",
|
| 43 |
+
"axios": "^1.13.6",
|
| 44 |
+
"bcrypt": "^5.1.0",
|
| 45 |
+
"class-transformer": "^0.5.0",
|
| 46 |
+
"class-validator": "^0.14.0",
|
| 47 |
+
"concurrently": "^8.2.0",
|
| 48 |
+
"crypto-js": "^4.2.0",
|
| 49 |
+
"docx": "^9.6.1",
|
| 50 |
+
"exceljs": "^4.4.0",
|
| 51 |
+
"express": "^5.2.1",
|
| 52 |
+
"groq-sdk": "^0.5.0",
|
| 53 |
+
"ioredis": "^5.10.0",
|
| 54 |
+
"langchain": "^1.3.3",
|
| 55 |
+
"mongodb": "^6.0.0",
|
| 56 |
+
"mssql": "^12.2.0",
|
| 57 |
+
"mysql2": "^3.6.0",
|
| 58 |
+
"openai": "^6.27.0",
|
| 59 |
+
"passport": "^0.6.0",
|
| 60 |
+
"passport-jwt": "^4.0.0",
|
| 61 |
+
"passport-local": "^1.0.0",
|
| 62 |
+
"pdfkit": "^0.17.2",
|
| 63 |
+
"pg": "^8.11.0",
|
| 64 |
+
"reflect-metadata": "^0.1.13",
|
| 65 |
+
"rxjs": "^7.8.0",
|
| 66 |
+
"socket.io": "^4.7.0",
|
| 67 |
+
"stripe": "^20.4.1",
|
| 68 |
+
"swagger-ui-express": "^5.0.0",
|
| 69 |
+
"typeorm": "^0.3.0",
|
| 70 |
+
"uuid": "^9.0.0"
|
| 71 |
+
},
|
| 72 |
+
"devDependencies": {
|
| 73 |
+
"@nestjs/cli": "^10.0.0",
|
| 74 |
+
"@nestjs/schematics": "^10.0.0",
|
| 75 |
+
"@nestjs/testing": "^10.0.0",
|
| 76 |
+
"@types/bcrypt": "^5.0.0",
|
| 77 |
+
"@types/crypto-js": "^4.2.0",
|
| 78 |
+
"@types/express": "^4.17.25",
|
| 79 |
+
"@types/node": "^20.0.0",
|
| 80 |
+
"@types/passport-jwt": "^3.0.0",
|
| 81 |
+
"@types/passport-local": "^1.0.0",
|
| 82 |
+
"@types/pdfkit": "^0.17.5",
|
| 83 |
+
"@types/uuid": "^9.0.0",
|
| 84 |
+
"jest": "^29.5.0",
|
| 85 |
+
"ts-jest": "^29.1.0",
|
| 86 |
+
"ts-node": "^10.9.0",
|
| 87 |
+
"typescript": "^5.1.0"
|
| 88 |
+
}
|
| 89 |
+
}
|
start-services.sh
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/bin/sh
|
| 2 |
+
set -eu
|
| 3 |
+
|
| 4 |
+
export API_GATEWAY_PORT="${PORT:-7860}"
|
| 5 |
+
export AGENT_SERVICE_HOST="${AGENT_SERVICE_HOST:-127.0.0.1}"
|
| 6 |
+
export DB_CONNECTOR_HOST="${DB_CONNECTOR_HOST:-127.0.0.1}"
|
| 7 |
+
export KNOWLEDGE_SERVICE_HOST="${KNOWLEDGE_SERVICE_HOST:-127.0.0.1}"
|
| 8 |
+
|
| 9 |
+
node apps/agent-service/apps/agent-service/src/main.js &
|
| 10 |
+
PID_AGENT=$!
|
| 11 |
+
node apps/db-connector/apps/db-connector/src/main.js &
|
| 12 |
+
PID_DB=$!
|
| 13 |
+
node apps/knowledge-service/apps/knowledge-service/src/main.js &
|
| 14 |
+
PID_KNOWLEDGE=$!
|
| 15 |
+
node apps/api-gateway/apps/api-gateway/src/main.js &
|
| 16 |
+
PID_GATEWAY=$!
|
| 17 |
+
|
| 18 |
+
shutdown() {
|
| 19 |
+
kill "$PID_GATEWAY" "$PID_KNOWLEDGE" "$PID_DB" "$PID_AGENT" 2>/dev/null || true
|
| 20 |
+
}
|
| 21 |
+
|
| 22 |
+
trap shutdown INT TERM
|
| 23 |
+
wait "$PID_GATEWAY"
|