MTayyaBH commited on
Commit
3de52b9
·
1 Parent(s): d714fad

Run Nest microservices in Docker Space

Browse files
Files changed (3) hide show
  1. Dockerfile +9 -3
  2. package.json +89 -0
  3. start-services.sh +23 -0
Dockerfile CHANGED
@@ -1,10 +1,16 @@
1
- FROM python:3.11-slim
2
 
3
  WORKDIR /app
4
 
5
- COPY app.py /app/app.py
 
6
 
 
 
 
 
 
7
  ENV PORT=7860
8
  EXPOSE 7860
9
 
10
- CMD ["python", "app.py"]
 
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"