Skip to content

Commit b5a663d

Browse files
authored
Merge pull request #17 from Mala1180/feature/kafka-streaming
Add video streaming with kafka and socketio
2 parents 4ba7398 + f69dad6 commit b5a663d

File tree

485 files changed

+4715
-1301
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

485 files changed

+4715
-1301
lines changed

.dockerignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,4 @@ docs
1212
.github
1313
.git
1414
.gradle
15+
.DS_Store

alarm/Dockerfile

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,31 +19,23 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
1919
# Add source code
2020
COPY . .
2121

22-
RUN gradle monitoring:build --no-daemon --info
22+
RUN gradle alarm:build --no-daemon --info --parallel
2323

24-
#CMD ls monitoring/node_modules/domain
25-
#CMD gradle monitoring:start --no-daemon --info
2624

2725
FROM node:20-alpine as production
2826
2927

3028
WORKDIR /home/revue
3129

32-
COPY --from=build /home/revue/monitoring monitoring
30+
COPY --from=build /home/revue/.env alarm/.env
31+
COPY --from=build /home/revue/alarm alarm
3332
COPY --from=build /home/revue/domain domain
3433

3534
RUN apk add dumb-init && apk add --update npm
3635

37-
WORKDIR /home/revue/monitoring
36+
WORKDIR /home/revue/alarm
3837

39-
EXPOSE 3000
40-
41-
#RUN cd node_modules
42-
#RUN cd domain
43-
# Start the application with privileges of user "node" for security reasons
44-
#USER node
38+
EXPOSE $MONITORING_PORT
4539

4640
# Run dumb-init as first process, which will have PID 1, then run node command to start the application
47-
CMD ["npm", "run", "serve" ]
48-
#CMD ls
49-
41+
CMD ["dumb-init", "npm", "run", "serve" ]

alarm/docker-compose.yml

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,34 @@
1-
version: "3.8"
1+
version: '3.8'
22

33
services:
44

5-
monitoring:
6-
image: monitoring
7-
container_name: monitoring
5+
revue-alarm:
6+
image: revue-alarm
7+
container_name: revue-alarm
88
build:
9-
context: ../
10-
dockerfile: ./monitoring/Dockerfile
9+
context: .
10+
dockerfile: ./alarm/Dockerfile
1111
restart: on-failure
1212
ports:
13-
- "3000:3000"
13+
- ${ALARM_PORT}:${ALARM_PORT}
14+
depends_on:
15+
- revue-alarm-db
16+
- ${KAFKA_CONTAINER}
1417

15-
db:
18+
revue-alarm-db:
1619
image: mongo
17-
container_name: monitoring-db
20+
container_name: ${ALARM_DB_HOST}
1821
restart: always
1922
environment:
20-
MONGO_INITDB_ROOT_USERNAME: root
21-
MONGO_INITDB_ROOT_PASSWORD: example
23+
MONGO_INITDB_ROOT_USERNAME: ${ALARM_DB_USERNAME}
24+
MONGO_INITDB_ROOT_PASSWORD: ${ALARM_DB_PASSWORD}
25+
MONGO_INITDB_DATABASE: ${ALARM_DB_NAME}
2226
ports:
23-
- "27017:27017"
27+
- ${ALARM_DB_PORT}:27017
28+
volumes:
29+
- alarm_data:/data/db
30+
# - ./alarm/db/device-init.js:/docker-entrypoint-initdb.d/device-init.js
31+
32+
volumes:
33+
alarm_data:
34+
driver: local

alarm/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"main": "dist/src/index.js",
88
"scripts": {
99
"serve": "node .",
10-
"start": "npm run build && node .",
10+
"dev": "npm run build && node NODE_ENV=develop --env-file=../.env .",
1111
"build": "tsc && tsc-alias",
1212
"watch": "tsc -w & tsc-alias -w & nodemon .",
1313
"test": "vitest --run",

auth/Dockerfile

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# syntax = docker/dockerfile:1.2
2+
3+
FROM gradle as build
4+
5+
6+
# Move to the directory where the application will be built
7+
WORKDIR /home/revue
8+
9+
# removes the configurations to delete cached files after a successful install
10+
RUN rm -f /etc/apt/apt.conf.d/docker-clean; echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache
11+
12+
# Install curl and nodejs 20 (LTS)
13+
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
14+
--mount=type=cache,target=/var/lib/apt,sharing=locked \
15+
apt update && apt-get install -y --no-install-recommends curl \
16+
&& curl -sL https://deb.nodesource.com/setup_20.x | bash - \
17+
&& apt-get install --no-install-recommends -y nodejs
18+
19+
# Add source code
20+
COPY . .
21+
22+
RUN gradle auth:build --no-daemon --info --parallel
23+
24+
25+
FROM node:20-alpine as production
26+
27+
28+
WORKDIR /home/revue
29+
30+
COPY --from=build /home/revue/.env auth/.env
31+
COPY --from=build /home/revue/auth auth
32+
COPY --from=build /home/revue/domain domain
33+
34+
RUN apk add dumb-init && apk add --update npm
35+
36+
WORKDIR /home/revue/auth
37+
38+
EXPOSE $MONITORING_PORT
39+
40+
# Run dumb-init as first process, which will have PID 1, then run node command to start the application
41+
CMD ["dumb-init", "npm", "run", "serve" ]

auth/docker-compose.yml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
version: '3.8'
2+
3+
services:
4+
5+
revue-auth:
6+
image: revue-auth
7+
container_name: revue-auth
8+
build:
9+
context: .
10+
dockerfile: ./auth/Dockerfile
11+
restart: on-failure
12+
ports:
13+
- ${AUTH_PORT}:${AUTH_PORT}
14+
depends_on:
15+
- revue-auth-db
16+
- ${KAFKA_CONTAINER}
17+
18+
revue-auth-db:
19+
image: mongo
20+
container_name: ${AUTH_DB_HOST}
21+
restart: always
22+
environment:
23+
MONGO_INITDB_ROOT_USERNAME: ${AUTH_DB_USERNAME}
24+
MONGO_INITDB_ROOT_PASSWORD: ${AUTH_DB_PASSWORD}
25+
MONGO_INITDB_DATABASE: ${AUTH_DB_NAME}
26+
ports:
27+
- ${AUTH_DB_PORT}:27017
28+
volumes:
29+
- auth_data:/data/db
30+
# - ./auth/db/device-init.js:/docker-entrypoint-initdb.d/device-init.js
31+
32+
volumes:
33+
auth_data:
34+
driver: local

auth/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
"description": "Authentication microservice",
77
"main": "dist/src/index.js",
88
"scripts": {
9-
"start": "npm run build && node --experimental-specifier-resolution=node .",
9+
"serve": "node .",
10+
"dev": "npm run build && node NODE_ENV=develop --env-file=../.env .",
1011
"build": "tsc && tsc-alias",
1112
"watch": "tsc -w & tsc-alias -w & nodemon --experimental-specifier-resolution=node .",
1213
"test": "vitest --run",

camera/Dockerfile

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,31 +19,24 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
1919
# Add source code
2020
COPY . .
2121

22-
RUN gradle monitoring:build --no-daemon --info
2322

24-
#CMD ls monitoring/node_modules/domain
25-
#CMD gradle monitoring:start --no-daemon --info
23+
RUN gradle camera:build --no-daemon --info --parallel
24+
2625

2726
FROM node:20-alpine as production
2827
2928

3029
WORKDIR /home/revue
3130

32-
COPY --from=build /home/revue/monitoring monitoring
31+
COPY --from=build /home/revue/.env camera/.env
32+
COPY --from=build /home/revue/camera camera
3333
COPY --from=build /home/revue/domain domain
3434

3535
RUN apk add dumb-init && apk add --update npm
3636

37-
WORKDIR /home/revue/monitoring
38-
39-
EXPOSE 3000
37+
WORKDIR /home/revue/camera
4038

41-
#RUN cd node_modules
42-
#RUN cd domain
43-
# Start the application with privileges of user "node" for security reasons
44-
#USER node
39+
EXPOSE $CAMERA_PORT
4540

4641
# Run dumb-init as first process, which will have PID 1, then run node command to start the application
47-
CMD ["npm", "run", "serve" ]
48-
#CMD ls
49-
42+
CMD ["dumb-init", "npm", "run", "serve" ]

camera/docker-compose.yml

Lines changed: 36 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,45 @@
1-
version: "3.8"
1+
version: '3.8'
22

33
services:
44

5-
monitoring:
6-
image: monitoring
7-
container_name: monitoring
5+
revue-camera-1:
6+
image: revue-camera
7+
container_name: revue-camera-1
88
build:
9-
context: ../
10-
dockerfile: ./monitoring/Dockerfile
9+
context: .
10+
dockerfile: ./camera/Dockerfile
1111
restart: on-failure
12+
environment:
13+
- CAMERA_CODE=cam-01
14+
ports:
15+
- ${CAMERA_PORT_1}:${CAMERA_PORT_1}
16+
depends_on:
17+
- ${KAFKA_CONTAINER}
18+
19+
revue-camera-2:
20+
image: revue-camera
21+
container_name: revue-camera-2
22+
build:
23+
context: .
24+
dockerfile: ./camera/Dockerfile
25+
restart: on-failure
26+
environment:
27+
- CAMERA_CODE=cam-02
1228
ports:
13-
- "3000:3000"
29+
- ${CAMERA_PORT_2}:${CAMERA_PORT_2}
30+
depends_on:
31+
- ${KAFKA_CONTAINER}
1432

15-
db:
16-
image: mongo
17-
container_name: monitoring-db
18-
restart: always
33+
revue-camera-3:
34+
image: revue-camera
35+
container_name: revue-camera-3
36+
build:
37+
context: .
38+
dockerfile: ./camera/Dockerfile
39+
restart: on-failure
1940
environment:
20-
MONGO_INITDB_ROOT_USERNAME: root
21-
MONGO_INITDB_ROOT_PASSWORD: example
41+
- CAMERA_CODE=cam-03
2242
ports:
23-
- "27017:27017"
43+
- ${CAMERA_PORT_3}:${CAMERA_PORT_3}
44+
depends_on:
45+
- ${KAFKA_CONTAINER}

camera/images/frame1.png

147 KB

camera/images/frame10.png

157 KB

camera/images/frame100.png

173 KB

camera/images/frame101.png

175 KB

camera/images/frame102.png

173 KB

camera/images/frame103.png

174 KB

camera/images/frame104.png

173 KB

camera/images/frame105.png

175 KB

camera/images/frame106.png

173 KB

camera/images/frame107.png

174 KB

camera/images/frame108.png

173 KB

camera/images/frame109.png

176 KB

camera/images/frame11.png

158 KB

camera/images/frame110.png

174 KB

camera/images/frame111.png

174 KB

camera/images/frame112.png

173 KB

camera/images/frame113.png

176 KB

camera/images/frame114.png

173 KB

camera/images/frame115.png

175 KB

camera/images/frame116.png

174 KB

camera/images/frame117.png

176 KB

camera/images/frame118.png

174 KB

camera/images/frame119.png

175 KB

camera/images/frame12.png

160 KB

camera/images/frame120.png

174 KB

camera/images/frame121.png

177 KB

camera/images/frame122.png

174 KB

camera/images/frame123.png

175 KB

camera/images/frame124.png

174 KB

camera/images/frame125.png

176 KB

camera/images/frame126.png

173 KB

camera/images/frame127.png

175 KB

camera/images/frame128.png

173 KB

camera/images/frame129.png

176 KB

camera/images/frame13.png

160 KB

camera/images/frame130.png

174 KB

camera/images/frame131.png

175 KB

camera/images/frame132.png

175 KB

camera/images/frame133.png

177 KB

camera/images/frame134.png

175 KB

camera/images/frame135.png

175 KB

camera/images/frame136.png

174 KB

camera/images/frame137.png

176 KB

camera/images/frame138.png

174 KB

camera/images/frame139.png

175 KB

camera/images/frame14.png

159 KB

camera/images/frame140.png

175 KB

camera/images/frame141.png

176 KB

camera/images/frame142.png

174 KB

camera/images/frame143.png

175 KB

camera/images/frame144.png

174 KB

camera/images/frame145.png

176 KB

camera/images/frame146.png

174 KB

camera/images/frame147.png

175 KB

camera/images/frame148.png

175 KB

camera/images/frame149.png

177 KB

camera/images/frame15.png

161 KB

camera/images/frame150.png

174 KB

camera/images/frame151.png

175 KB

camera/images/frame152.png

174 KB

camera/images/frame153.png

176 KB

camera/images/frame154.png

174 KB

camera/images/frame155.png

175 KB

camera/images/frame156.png

174 KB

camera/images/frame157.png

176 KB

camera/images/frame158.png

174 KB

camera/images/frame159.png

174 KB

camera/images/frame16.png

161 KB

camera/images/frame160.png

174 KB

camera/images/frame161.png

175 KB

camera/images/frame162.png

173 KB

camera/images/frame163.png

174 KB

camera/images/frame164.png

172 KB

camera/images/frame165.png

175 KB

camera/images/frame166.png

174 KB

camera/images/frame167.png

174 KB

camera/images/frame168.png

173 KB

camera/images/frame169.png

175 KB

camera/images/frame17.png

162 KB

camera/images/frame170.png

173 KB

camera/images/frame171.png

173 KB

camera/images/frame172.png

172 KB

camera/images/frame173.png

174 KB

camera/images/frame174.png

171 KB

camera/images/frame175.png

172 KB

camera/images/frame176.png

172 KB

camera/images/frame177.png

174 KB

camera/images/frame178.png

172 KB

camera/images/frame179.png

172 KB

camera/images/frame18.png

162 KB

camera/images/frame180.png

172 KB

camera/images/frame181.png

174 KB

camera/images/frame182.png

171 KB

camera/images/frame183.png

172 KB

camera/images/frame184.png

172 KB

camera/images/frame185.png

173 KB

camera/images/frame186.png

171 KB

camera/images/frame187.png

172 KB

camera/images/frame188.png

171 KB

camera/images/frame189.png

173 KB

camera/images/frame19.png

163 KB

camera/images/frame190.png

171 KB

camera/images/frame191.png

172 KB

camera/images/frame192.png

171 KB

camera/images/frame193.png

173 KB

camera/images/frame194.png

172 KB

camera/images/frame195.png

172 KB

camera/images/frame196.png

171 KB

camera/images/frame197.png

172 KB

camera/images/frame198.png

170 KB

camera/images/frame199.png

171 KB

camera/images/frame2.png

151 KB

camera/images/frame20.png

163 KB

camera/images/frame200.png

170 KB

camera/images/frame201.png

171 KB

camera/images/frame202.png

169 KB

camera/images/frame203.png

169 KB

camera/images/frame204.png

169 KB

camera/images/frame205.png

170 KB

camera/images/frame206.png

168 KB

camera/images/frame207.png

169 KB

camera/images/frame208.png

168 KB

camera/images/frame209.png

170 KB

camera/images/frame21.png

163 KB

camera/images/frame210.png

168 KB

camera/images/frame211.png

169 KB

camera/images/frame212.png

168 KB

camera/images/frame213.png

169 KB

camera/images/frame214.png

166 KB

camera/images/frame215.png

167 KB

camera/images/frame216.png

167 KB

camera/images/frame217.png

169 KB

camera/images/frame218.png

166 KB

camera/images/frame219.png

167 KB

camera/images/frame22.png

163 KB

camera/images/frame220.png

166 KB

camera/images/frame221.png

168 KB

camera/images/frame222.png

166 KB

camera/images/frame223.png

167 KB

camera/images/frame224.png

165 KB

camera/images/frame225.png

168 KB

camera/images/frame226.png

165 KB

camera/images/frame227.png

166 KB

camera/images/frame228.png

165 KB

camera/images/frame229.png

166 KB

camera/images/frame23.png

164 KB

camera/images/frame230.png

164 KB

camera/images/frame231.png

165 KB

camera/images/frame232.png

164 KB

camera/images/frame233.png

166 KB

camera/images/frame234.png

164 KB

camera/images/frame235.png

164 KB

camera/images/frame236.png

163 KB

camera/images/frame237.png

166 KB

camera/images/frame238.png

163 KB

camera/images/frame239.png

164 KB

camera/images/frame24.png

164 KB

camera/images/frame240.png

163 KB

camera/images/frame241.png

165 KB

camera/images/frame242.png

163 KB

camera/images/frame243.png

164 KB

camera/images/frame244.png

163 KB

camera/images/frame245.png

165 KB

camera/images/frame246.png

162 KB

camera/images/frame247.png

164 KB

camera/images/frame248.png

163 KB

camera/images/frame249.png

164 KB

camera/images/frame25.png

165 KB

camera/images/frame250.png

164 KB

camera/images/frame251.png

146 KB

camera/images/frame252.png

148 KB

camera/images/frame253.png

149 KB

camera/images/frame254.png

150 KB

camera/images/frame255.png

150 KB

camera/images/frame256.png

150 KB

camera/images/frame257.png

150 KB

camera/images/frame258.png

151 KB

camera/images/frame259.png

152 KB

camera/images/frame26.png

165 KB

camera/images/frame260.png

152 KB

camera/images/frame261.png

153 KB

camera/images/frame262.png

153 KB

camera/images/frame263.png

153 KB

camera/images/frame264.png

153 KB

camera/images/frame265.png

154 KB

camera/images/frame266.png

154 KB

camera/images/frame267.png

154 KB

camera/images/frame268.png

154 KB

camera/images/frame269.png

155 KB

camera/images/frame27.png

165 KB

camera/images/frame270.png

155 KB

camera/images/frame271.png

156 KB

camera/images/frame272.png

155 KB

camera/images/frame273.png

155 KB

camera/images/frame274.png

155 KB

camera/images/frame275.png

156 KB

camera/images/frame276.png

155 KB

camera/images/frame277.png

156 KB

camera/images/frame278.png

156 KB

camera/images/frame279.png

157 KB

camera/images/frame28.png

166 KB

camera/images/frame280.png

156 KB

camera/images/frame281.png

157 KB

camera/images/frame282.png

156 KB

camera/images/frame283.png

158 KB

camera/images/frame284.png

156 KB

camera/images/frame285.png

157 KB

camera/images/frame286.png

157 KB

camera/images/frame287.png

158 KB

camera/images/frame288.png

157 KB

camera/images/frame289.png

158 KB

camera/images/frame29.png

167 KB

camera/images/frame290.png

157 KB

camera/images/frame291.png

159 KB

camera/images/frame292.png

157 KB

camera/images/frame293.png

158 KB

camera/images/frame294.png

157 KB

camera/images/frame295.png

159 KB

camera/images/frame296.png

158 KB

camera/images/frame297.png

159 KB

camera/images/frame298.png

159 KB

camera/images/frame299.png

160 KB

camera/images/frame3.png

152 KB

camera/images/frame30.png

166 KB

camera/images/frame300.png

158 KB

camera/images/frame301.png

159 KB

camera/images/frame302.png

159 KB

camera/images/frame303.png

160 KB

camera/images/frame304.png

158 KB

camera/images/frame305.png

159 KB

camera/images/frame306.png

159 KB

camera/images/frame307.png

160 KB

camera/images/frame308.png

158 KB

camera/images/frame309.png

159 KB

camera/images/frame31.png

166 KB

camera/images/frame310.png

159 KB

camera/images/frame311.png

161 KB

camera/images/frame312.png

159 KB

camera/images/frame313.png

159 KB

camera/images/frame314.png

159 KB

camera/images/frame315.png

161 KB

camera/images/frame316.png

158 KB

camera/images/frame317.png

159 KB

camera/images/frame318.png

159 KB

camera/images/frame319.png

161 KB

camera/images/frame32.png

166 KB

camera/images/frame320.png

158 KB

camera/images/frame321.png

159 KB

camera/images/frame322.png

159 KB

camera/images/frame323.png

160 KB

camera/images/frame324.png

158 KB

camera/images/frame325.png

159 KB

camera/images/frame326.png

159 KB

camera/images/frame327.png

161 KB

camera/images/frame328.png

158 KB

camera/images/frame329.png

159 KB

camera/images/frame33.png

167 KB

camera/images/frame330.png

159 KB

camera/images/frame331.png

160 KB

camera/images/frame332.png

159 KB

camera/images/frame333.png

159 KB

camera/images/frame334.png

159 KB

camera/images/frame335.png

161 KB

camera/images/frame336.png

159 KB

camera/images/frame337.png

160 KB

camera/images/frame338.png

159 KB

camera/images/frame339.png

162 KB

camera/images/frame34.png

166 KB

camera/images/frame340.png

160 KB

camera/images/frame341.png

160 KB

camera/images/frame342.png

160 KB

camera/images/frame343.png

162 KB

camera/images/frame344.png

160 KB

camera/images/frame345.png

161 KB

camera/images/frame346.png

160 KB

camera/images/frame347.png

161 KB

camera/images/frame348.png

159 KB

camera/images/frame349.png

161 KB

camera/images/frame35.png

167 KB

camera/images/frame350.png

161 KB

camera/images/frame351.png

162 KB

camera/images/frame352.png

160 KB

camera/images/frame353.png

162 KB

camera/images/frame354.png

161 KB

camera/images/frame355.png

162 KB

camera/images/frame356.png

160 KB

camera/images/frame357.png

161 KB

camera/images/frame358.png

161 KB

camera/images/frame359.png

163 KB

camera/images/frame36.png

168 KB

camera/images/frame360.png

160 KB

0 commit comments

Comments
 (0)