docker-compose部署

1.docker安装

切换账号(输入密码)

  1. sudo -i

安装 Docker

  1. mkdir /home/anosi/software && cd /home/anosi/software
  2. curl -fsSL https://get.docker.com -o get-docker.sh

给其他人执行权限

  1. chmod o+x get-docker.sh

执行脚本

  1. sh get-docker.sh

启动 Docker 后台服务,并设值开机启动

  1. systemctl enable docker
  2. service docker start

1.1 Windows 和 Mac 的用户可以下载 Docker Desktop 来完成 Docker 安装。

下载地址: https://www.docker.com/products/docker-desktop

点击下图的按钮,按照官网步骤,完成下载安装。

1.2 对于 Linux 用户,请参照以下表格的链接来安装 Docker

操作系统 文档
Ubuntu https://docs.docker.com/install/linux/docker-ce/ubuntu
Debian https://docs.docker.com/install/linux/docker-ce/debian
CentOS https://docs.docker.com/install/linux/docker-ce/centos
Fedora https://docs.docker.com/install/linux/docker-ce/fedora
其他 Linux 发行版 https://docs.docker.com/install/linux/docker-ce/binaries

1.3 Docker 常用命令

参考:
https://blog.csdn.net/u013378306/article/details/86668313

2.docker-compose安装

docker-compose是一个集群管理方式,可以利用名为docker-compose.yml的yaml文件来定义需要启动的容器,可以是单个,也可以(通常)是多个的。

  1. sudo curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

授权可执行权限

  1. sudo chmod +x /usr/local/bin/docker-compose

创建软链

  1. sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

安装好 docker-compose 后,请运行 docker-compose -v 来测试是否安装正常。正常的应该是显示如下内容。

  1. docker-compose version 1.24.1, build 4667896b

3.安装环境依赖git、maven、java、npm

  1. yum -y install git maven java npm

4.打包部署

4.1 在/home/anosi拉取git项目(需要输入gitlab账号密码)

  1. cd /home/anosi
  2. git clone http://10.1.1.160/device/back/device-manage.git
  3. git clone http://10.1.1.160/device/front/device-manage-client.git
  4. git clone http://10.1.1.160/device/front/device-manage-server.git

4.2 修改yml配置

编辑docker-compose.yml, 全局搜索并修改gsk-host和gsk—rabbitmq。

  • gsk-host:流媒体服务器地址,先本机内网ip,后可以通过nacos修改为正式的地址
  • gsk—rabbitmq:数据中心rabbitmq地址

4.3 方式一:一键打包部署

  1. vi device-manage-start.sh

把下面编辑到sh脚本里

  1. # 定义工作目录
  2. WORK=$(pwd)
  3. # 后端打包
  4. cd $WORK/device-manage && mvn clean install
  5. # 服务端打包
  6. cd $WORK/device-manage-server && npm install && npm run build && cp -r dist ../device-manage/gsk-nginx/html/server
  7. # 客户端打包
  8. cd $WORK/device-manage-client && npm install && npm run build && cp -r dist ../device-manage/gsk-nginx/html/client
  9. # 启动服务
  10. cd $WORK/device-manage && docker-compose build && docker-compose up -d && docker-compose logs -f

执行脚本

  1. sh device-manage-start.sh

4.4 方式二:手动打包部署:

  • 4.4.1 后端项目打包
  1. cd /home/anosi/device-manage
  2. mvn clean install -Dmaven.test.skip=true
  • 4.4.2 客户端打包
  1. npm config -g set unsafe-perm
  2. cd /home/anosi/device-manage-client
  3. npm install
  4. npm run build
  5. cp -r dist ../device-manage/gsk-nginx/html/server
  • 4.4.3 服务端打包
  1. cd /home/anosi/device-manage-server
  2. npm install
  3. cp -r dist ../device-manage/gsk-nginx/html/client
  • 4.4.4 docker-compose创建服务镜像、部署
    构建镜像、启动服务、依次执行以下命令:
  1. cd /home/anosi/device-manage
  2. docker-compose build
  3. docker-compose up -d

4.5 部署成功

  1. 访问http://10.1.1.124:18848/nacos
    (账号/密码:nacos/nacos)等待大概三分钟服务即可全部启动,一共有九个服务:
    gsk-maintain-biz、gsk-alarm-biz、gsk-monitor、gsk-device-biz、gsk-upms-biz、gsk-auth、gsk-energy-biz、gsk-report-biz、gsk-gateway
  2. 访问http://10.1.1.124:10081
  3. 访问http://10.1.1.124:10082

以上,代表部署成功!

5.更新/重启

  1. cd /home/anosi/device-manage
  2. git pull
  3. cd /home/anosi/device-manage-server
  4. git pull
  5. cd /home/anosi/device-manage-client
  6. git pull
  1. 然后执行步骤4.4,进行手动打包
  2. 重启服务容器
    停止服务容器
  1. cd /home/anosi/device-manage
  2. docker-compose stop

构建镜像

  1. docker-compose build

构建容器启动服务

  1. docker-compose up -d && docker-compose logs -f

6.issue

  • 若npm install报错(含有node-sass字样),执行npm uninstall node-sass,再执行npm install

7.日志查看

访问http://10.1.1.124:15001(pig/pig),选择模块,选择【日志】-【日志文件】即可查看日志

8.扩展

  1. 停止容器,id代表容器id,去掉id即代表停止所有容器
  1. docker-compose stop [id]
  1. 删除所有容器(会删除docker内所有服务,以及mysql、redis等数据)。场景:适用于想重新初始化,重新创建容器
  1. docker-compose down
  1. 启动某个服务
  1. docker-compose restart [id]
  1. 单发某个微服务,可把本地编译好的jar包放到device-manage对应的target下面,后执行构建镜像和启动镜像操作即可
  2. 修改Nacos配置,需要重启对应的服务才能生效

9.docker-compose.yml

  1. version: '3'
  2. services:
  3. device-manage-mysql:
  4. build:
  5. context: ./db
  6. environment:
  7. MYSQL_ROOT_PASSWORD: anosi.cn
  8. restart: always
  9. container_name: device-manage-mysql
  10. image: device-manage-mysql
  11. hostname: gsk-mysql
  12. ports:
  13. - 3306:3306
  14. command: [
  15. '--character-set-server=utf8mb4',
  16. '--collation-server=utf8mb4_general_ci'
  17. ]
  18. volumes:
  19. #mysql数据库挂载到host物理机目录
  20. - "./mysql/data/db:/var/lib/mysql"
  21. #容器的配置目录挂载到host物理机目录
  22. - "./mysql/data/conf:/etc/mysql/conf.d"
  23. # docker安全验证
  24. security_opt:
  25. - seccomp:unconfined
  26. device-manage-redis:
  27. image: redis:6.0
  28. ports:
  29. - 6379:6379
  30. restart: always
  31. container_name: device-manage-redis
  32. hostname: gsk-redis
  33. volumes:
  34. - "./redis/data/db:/data/db" # make data persistent 持久化
  35. - "./redis/logs:/logs"
  36. command: redis-server --requirepass anosi.cn
  37. device-manage-mongodb:
  38. restart: always
  39. container_name: device-manage-mongodb
  40. image: mongo
  41. hostname: gsk-mongodb
  42. ports:
  43. - '27017-27019:27017-27019'
  44. volumes:
  45. - "./mongo/data/db:/data/db" # make data persistent 持久化
  46. - "./mongo/logs:/logs"
  47. device-manage-register:
  48. build:
  49. context: ./gsk-register
  50. restart: always
  51. ports:
  52. - 18848:18848
  53. container_name: device-manage-register
  54. hostname: gsk-register
  55. image: device-manage-register
  56. volumes:
  57. - "./gsk-register/logs:/logs"
  58. device-manage-gateway:
  59. build:
  60. context: ./gsk-gateway
  61. restart: always
  62. ports:
  63. - 19999:19999
  64. container_name: device-manage-gateway
  65. hostname: gsk-gateway
  66. image: device-manage-gateway
  67. volumes:
  68. - "./gsk-gateway/logs:/logs"
  69. device-manage-auth:
  70. build:
  71. context: ./gsk-auth
  72. restart: always
  73. container_name: device-manage-auth
  74. hostname: gsk-auth
  75. image: device-manage-auth
  76. volumes:
  77. - "./gsk-auth/logs:/logs"
  78. device-manage-upms:
  79. build:
  80. context: ./gsk-upms/gsk-upms-biz
  81. restart: always
  82. container_name: device-manage-upms
  83. hostname: gsk-upms
  84. image: device-manage-upms
  85. volumes:
  86. - "./gsk-upms/logs:/logs"
  87. device-manage-device:
  88. build:
  89. context: ./gsk-device/gsk-device-biz
  90. restart: always
  91. container_name: device-manage-device
  92. hostname: gsk-device
  93. image: device-manage-device
  94. extra_hosts:
  95. gsk-host: 10.0.1.175
  96. gsk-rabbitmq: 10.1.1.123
  97. volumes:
  98. - "./gsk-device/logs:/logs"
  99. device-manage-maintain:
  100. build:
  101. context: ./gsk-maintain/gsk-maintain-biz
  102. restart: always
  103. container_name: device-manage-maintain
  104. hostname: gsk-maintain
  105. image: device-manage-maintain
  106. volumes:
  107. - "./gsk-maintain/logs:/logs"
  108. device-manage-report:
  109. build:
  110. context: ./gsk-report/gsk-report-biz
  111. restart: always
  112. container_name: device-manage-report
  113. hostname: gsk-report
  114. image: device-manage-report
  115. volumes:
  116. - "./gsk-report/logs:/logs"
  117. device-manage-energy:
  118. build:
  119. context: ./gsk-energy/gsk-energy-biz
  120. restart: always
  121. container_name: device-manage-energy
  122. hostname: gsk-energy
  123. image: device-manage-energy
  124. extra_hosts:
  125. gsk-rabbitmq: 10.1.1.123
  126. volumes:
  127. - "./gsk-energy/logs:/logs"
  128. device-manage-monitor:
  129. build:
  130. context: ./gsk-visual/gsk-monitor
  131. restart: always
  132. ports:
  133. - 15001:15001
  134. container_name: device-manage-monitor
  135. hostname: gsk-monitor
  136. image: device-manage-monitor
  137. volumes:
  138. - "./gsk-monitor/logs:/logs"
  139. device-manage-alarm:
  140. build:
  141. context: ./gsk-alarm/gsk-alarm-biz
  142. restart: always
  143. ports:
  144. - 17008:17008
  145. container_name: device-manage-alarm
  146. hostname: gsk-alarm
  147. image: device-manage-alarm
  148. extra_hosts:
  149. gsk-host: 10.0.1.175
  150. gsk-rabbitmq: 10.1.1.123
  151. volumes:
  152. - "./gsk-alarm/logs:/logs"
  153. #客户端
  154. device-manage-front:
  155. build:
  156. context: ./gsk-nginx
  157. restart: always
  158. container_name: device-manage-front
  159. image: device-manage-front
  160. external_links:
  161. - gsk-gateway
  162. ports:
  163. - 10082:10082
  164. - 10081:10081

10.页面及账号

10-1 页面地址:

11.参考资料

12.运行环境

  • 操作系统:CentOS Linux(Red Hat 4.8.5-44)
  • CPU:Intel(R) Xeon(R) CPU L5630 @2.13GHz
  • 内存:4GB
  • 硬盘:32Gb