@@ -235,13 +235,11 @@ PS D:\04_GitHub\java-architect-util\nodejs-cicd\cicd_web>
235
235
236
236
![ image-20240607110759329] ( 基于Node.js-Docker的CICD-DevOps实践/image-20240607110759329.png )
237
237
238
-
238
+ #### 4.1 克隆代码
239
239
240
240
> git clone http://192.168.3.4:28033/CoderDream/deploy.git
241
241
242
-
243
-
244
- deploy ->index.js 端口4000
242
+ * 编写index.js 端口4000
245
243
246
244
``` js
247
245
const http = require (' http' )
@@ -256,7 +254,7 @@ http.createServer((req,res)=>{
256
254
})
257
255
```
258
256
259
- deploy-> deploy.sh
257
+ * deploy.sh
260
258
261
259
```
262
260
#! /bin/sh
@@ -265,50 +263,37 @@ docker build -t cicd-web .
265
263
docker run --name=cicdweb -d -p 23333:3000 cicd-web
266
264
```
267
265
268
- 构建Docker镜像前拉取仓库
269
-
270
- 在NAS拉取代码
271
-
272
- > git clone http://192.168.3.4:28033/CoderDream/deploy.git
273
-
274
-
266
+ 修改sh文件权限
275
267
276
268
> chmod +x deploy.sh
277
269
278
270
![ image-20240607114530176] ( 基于Node.js-Docker的CICD-DevOps实践/image-20240607114530176.png )
279
271
280
- #### 4.2 提交代码
281
-
282
- > git config --global user.email "coderdream@gmail.com "
283
- > git config --global user.name "CoderDream"
284
-
285
- > root@DS920plus:/volume1/home/deploy# chmod +x deploy.sh
286
- > root@DS920plus:/volume1/home/deploy# git add .
287
- > root@DS920plus:/volume1/home/deploy# git commit -m 'xxx'
288
- > git push
289
-
290
- ![ image-20240607120526235] ( 基于Node.js-Docker的CICD-DevOps实践/image-20240607120526235.png )
272
+ #### 4.2 deploy web 服务启动子进程,执行 shell 脚本
291
273
274
+ * shell 脚本完成以下工作:
292
275
276
+ - web 项目代码克隆或者拉取
293
277
294
- ![ image-20240607144520230 ] ( 基于Node.js-Docker的CICD-DevOps实践/image-20240607144520230.png )
278
+ - 删除 web 旧容器和镜像
295
279
280
+ - 生成新的 web 镜像
296
281
282
+ * deploy.sh
297
283
298
284
```
299
285
#! /bin/sh
300
- pjName='cicd-web '
286
+ pjName='cicd_web '
301
287
302
288
if [ ! -d "www/${pjName}" ]; then
303
- echo git clone
289
+ echo ' git clone'
304
290
cd www
305
291
git clone http://192.168.3.4:28033/CoderDream/${pjName}
306
292
cd ${pjName}
307
293
else
308
294
echo 'git pull'
309
295
cd www/${pjName}
310
296
git pull
311
-
312
297
fi
313
298
314
299
docker stop cicdweb
@@ -319,12 +304,34 @@ docker build -t cicd-web .
319
304
docker run --name=cicdweb -d -p 23333:3000 cicd-web
320
305
```
321
306
322
- #### 4.3 build deploy 容器
307
+ #### 4.3 给 deply web 创建 Dockerfile
323
308
324
- > docker build -t cicd-deploy .
309
+ ```
310
+ FROM node:12.13-alpine
311
+ RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
312
+ RUN apk add git
313
+
314
+ WORKDIR /usr/src/app
315
+
316
+ COPY package*.json ./
317
+
318
+ RUN npm install --only=production
319
+
320
+ COPY . .
321
+
322
+ CMD [ "node", "index.js" ]
325
323
326
324
```
327
325
326
+
327
+
328
+ #### 4.4 生成 deploy web 服务镜像
329
+
330
+ ####
331
+
332
+ > docker build -t cicd-deploy .
333
+
334
+ ```
328
335
root@DS920plus:/volume1/home/deploy# docker build -t cicd-deploy .
329
336
Sending build context to Docker daemon 74.75kB
330
337
Step 1/7 : FROM node:12.13-alpine
@@ -372,44 +379,9 @@ Successfully tagged cicd-deploy:latest
372
379
root@DS920plus:/volume1/home/deploy#
373
380
```
374
381
375
-
376
-
377
382
![ image-20240607162031702] ( 基于Node.js-Docker的CICD-DevOps实践/image-20240607162031702.png )
378
383
379
- #### 4.4 deploy web 服务启动子进程,执行 shell 脚本
380
-
381
- ```
382
- #! /bin/sh
383
- pjName='cicd_web'
384
-
385
- if [ ! -d "www/${pjName}" ]; then
386
- echo 'git clone'
387
- cd www
388
- git clone http://192.168.3.4:28033/CoderDream/${pjName}
389
- cd ${pjName}
390
- else
391
- echo 'git pull'
392
- cd www/${pjName}
393
- git pull
394
- fi
395
-
396
- docker stop cicdweb
397
- docker rm -f cicdweb
398
- docker rmi -f cicd-web
399
-
400
- docker build -t cicd-web .
401
- docker run --name=cicdweb -d -p 23333:3000 cicd-web
402
- ```
403
-
404
-
405
-
406
- - shell 脚本完成以下工作:
407
- - web 项目代码克隆或者拉取
408
- - 删除 web 旧容器和镜像
409
- - 生成新的 web 镜像
410
- - 给 deply web 创建 Dockerfile
411
- - 生成 deploy web 服务镜像
412
- - 启动 deploy web 容器
384
+ #### 4.5 启动 deploy web 容器
413
385
414
386
![ image-20240607145549877] ( 基于Node.js-Docker的CICD-DevOps实践/image-20240607145549877.png )
415
387
@@ -419,10 +391,18 @@ docker run --name=cicdweb -d -p 23333:3000 cicd-web
419
391
>
420
392
>
421
393
>
422
- > docker run -d --name=deploy --network cicd_net -p 24444:4000 -v /usr/local/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock --user root cicd-deploy
394
+ >
423
395
424
396
![ image-20240607162229959] ( 基于Node.js-Docker的CICD-DevOps实践/image-20240607162229959.png )
425
397
398
+
399
+
400
+ ``` shell
401
+ docker run -d --name=deploy --network cicd_net -p 24444:4000 -v /usr/local/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock --user root cicd-deploy
402
+ ```
403
+
404
+
405
+
426
406
![ image-20240607162308177] ( 基于Node.js-Docker的CICD-DevOps实践/image-20240607162308177.png )
427
407
428
408
@@ -441,31 +421,13 @@ http://192.168.3.4:23333/
441
421
442
422
![ image-20240607165031664] ( 基于Node.js-Docker的CICD-DevOps实践/image-20240607165031664.png )
443
423
444
- ![ image-20240607165237012] ( 基于Node.js-Docker的CICD-DevOps实践/image-20240607165237012.png )
445
424
446
- ```
447
425
448
- Successfully tagged cicd-web:latest
449
426
450
- docker: Error response from daemon: Conflict. The container name "/cicdweb" is already in use by container "c6a42d20e6cdffa0d96cf2772ae34b5152a2f179dc3633c79044a41503348746". You have to remove (or rename) that container to be able to reuse that name.
451
427
452
- See 'docker run --help'.
453
428
454
- docker: Error response from daemon: pull access denied for cicd-web, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
455
429
456
- See 'docker run --help'.
457
430
458
- docker: Error response from daemon: pull access denied for cicd-web, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
459
-
460
- ```
461
-
462
-
463
-
464
- ![ image-20240607165413319] ( 基于Node.js-Docker的CICD-DevOps实践/image-20240607165413319.png )
465
-
466
- ```
467
-
468
- ```
469
431
470
432
471
433
@@ -489,13 +451,15 @@ CMD [ "node", "index.js" ]
489
451
> dockerfile RUN apk add 卡住问题解决
490
452
> https://blog.csdn.net/zhangzhen02/article/details/112217348
491
453
492
- #### 4.5 git hook 让 deploy 自动构建镜像生成 web 容器
454
+ #### 4.6 git hook 让 deploy 自动构建镜像生成 web 容器
493
455
494
456
- 配置 gogs 的 web hook,仓库提交代码时,推送 deploy web 服务
495
457
496
458
![ image-20240607173833127] ( 基于Node.js-Docker的CICD-DevOps实践/image-20240607173833127.png )
497
459
498
- #### 4.6 成功自动发布
460
+ 修改web应用提交到git后,deploy自动发布:
461
+
462
+ * deploy容器日志
499
463
500
464
```
501
465
git pull
@@ -533,7 +497,7 @@ Successfully tagged cicd-web:latest
533
497
6e7ff44d92a65d3dc8506831ffb7a821047dfe61aa1d70a12d47239ea270bf14
534
498
```
535
499
536
- 修改web应用提交到git后,deploy自动发布:
500
+ * 访问最新的web服务
537
501
538
502
![ image-20240607174315936] ( 基于Node.js-Docker的CICD-DevOps实践/image-20240607174315936.png )
539
503
0 commit comments