docker-compose部署
1.docker安装
切换账号(输入密码)
sudo -i
安装 Docker
mkdir /home/anosi/software && cd /home/anosi/softwarecurl -fsSL https://get.docker.com -o get-docker.sh
给其他人执行权限
chmod o+x get-docker.sh
执行脚本
sh get-docker.sh
启动 Docker 后台服务,并设值开机启动
systemctl enable dockerservice docker start
1.1 Windows 和 Mac 的用户可以下载 Docker Desktop 来完成 Docker 安装。
下载地址: https://www.docker.com/products/docker-desktop
点击下图的按钮,按照官网步骤,完成下载安装。
1.2 对于 Linux 用户,请参照以下表格的链接来安装 Docker
1.3 Docker 常用命令
参考:
https://blog.csdn.net/u013378306/article/details/86668313
2.docker-compose安装
docker-compose是一个集群管理方式,可以利用名为docker-compose.yml的yaml文件来定义需要启动的容器,可以是单个,也可以(通常)是多个的。
sudo curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
授权可执行权限
sudo chmod +x /usr/local/bin/docker-compose
创建软链
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
安装好 docker-compose 后,请运行 docker-compose -v 来测试是否安装正常。正常的应该是显示如下内容。
docker-compose version 1.24.1, build 4667896b
3.安装环境依赖git、maven、java、npm
yum -y install git maven java npm
4.打包部署
4.1 在/home/anosi拉取git项目(需要输入gitlab账号密码)
cd /home/anosigit clone http://10.1.1.160/device/back/device-manage.gitgit clone http://10.1.1.160/device/front/device-manage-client.gitgit 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 方式一:一键打包部署
vi device-manage-start.sh
把下面编辑到sh脚本里
# 定义工作目录WORK=$(pwd)# 后端打包cd $WORK/device-manage && mvn clean install# 服务端打包cd $WORK/device-manage-server && npm install && npm run build && cp -r dist ../device-manage/gsk-nginx/html/server# 客户端打包cd $WORK/device-manage-client && npm install && npm run build && cp -r dist ../device-manage/gsk-nginx/html/client# 启动服务cd $WORK/device-manage && docker-compose build && docker-compose up -d && docker-compose logs -f
执行脚本
sh device-manage-start.sh
4.4 方式二:手动打包部署:
- 4.4.1 后端项目打包
cd /home/anosi/device-managemvn clean install -Dmaven.test.skip=true
- 4.4.2 客户端打包
npm config -g set unsafe-permcd /home/anosi/device-manage-clientnpm installnpm run buildcp -r dist ../device-manage/gsk-nginx/html/server
- 4.4.3 服务端打包
cd /home/anosi/device-manage-servernpm installcp -r dist ../device-manage/gsk-nginx/html/client
- 4.4.4 docker-compose创建服务镜像、部署
构建镜像、启动服务、依次执行以下命令:
cd /home/anosi/device-managedocker-compose builddocker-compose up -d
4.5 部署成功
- 访问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 - 访问http://10.1.1.124:10081
- 访问http://10.1.1.124:10082
以上,代表部署成功!
5.更新/重启
cd /home/anosi/device-managegit pullcd /home/anosi/device-manage-servergit pullcd /home/anosi/device-manage-clientgit pull
- 然后执行步骤4.4,进行手动打包
- 重启服务容器
停止服务容器
cd /home/anosi/device-managedocker-compose stop
构建镜像
docker-compose build
构建容器启动服务
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.扩展
- 停止容器,id代表容器id,去掉id即代表停止所有容器
docker-compose stop [id]
- 删除所有容器(会删除docker内所有服务,以及mysql、redis等数据)。场景:适用于想重新初始化,重新创建容器
docker-compose down
- 启动某个服务
docker-compose restart [id]
- 单发某个微服务,可把本地编译好的jar包放到device-manage对应的target下面,后执行构建镜像和启动镜像操作即可
- 修改Nacos配置,需要重启对应的服务才能生效
9.docker-compose.yml
version: '3'services:device-manage-mysql:build:context: ./dbenvironment:MYSQL_ROOT_PASSWORD: anosi.cnrestart: alwayscontainer_name: device-manage-mysqlimage: device-manage-mysqlhostname: gsk-mysqlports:- 3306:3306command: ['--character-set-server=utf8mb4','--collation-server=utf8mb4_general_ci']volumes:#mysql数据库挂载到host物理机目录- "./mysql/data/db:/var/lib/mysql"#容器的配置目录挂载到host物理机目录- "./mysql/data/conf:/etc/mysql/conf.d"# docker安全验证security_opt:- seccomp:unconfineddevice-manage-redis:image: redis:6.0ports:- 6379:6379restart: alwayscontainer_name: device-manage-redishostname: gsk-redisvolumes:- "./redis/data/db:/data/db" # make data persistent 持久化- "./redis/logs:/logs"command: redis-server --requirepass anosi.cndevice-manage-mongodb:restart: alwayscontainer_name: device-manage-mongodbimage: mongohostname: gsk-mongodbports:- '27017-27019:27017-27019'volumes:- "./mongo/data/db:/data/db" # make data persistent 持久化- "./mongo/logs:/logs"device-manage-register:build:context: ./gsk-registerrestart: alwaysports:- 18848:18848container_name: device-manage-registerhostname: gsk-registerimage: device-manage-registervolumes:- "./gsk-register/logs:/logs"device-manage-gateway:build:context: ./gsk-gatewayrestart: alwaysports:- 19999:19999container_name: device-manage-gatewayhostname: gsk-gatewayimage: device-manage-gatewayvolumes:- "./gsk-gateway/logs:/logs"device-manage-auth:build:context: ./gsk-authrestart: alwayscontainer_name: device-manage-authhostname: gsk-authimage: device-manage-authvolumes:- "./gsk-auth/logs:/logs"device-manage-upms:build:context: ./gsk-upms/gsk-upms-bizrestart: alwayscontainer_name: device-manage-upmshostname: gsk-upmsimage: device-manage-upmsvolumes:- "./gsk-upms/logs:/logs"device-manage-device:build:context: ./gsk-device/gsk-device-bizrestart: alwayscontainer_name: device-manage-devicehostname: gsk-deviceimage: device-manage-deviceextra_hosts:gsk-host: 10.0.1.175gsk-rabbitmq: 10.1.1.123volumes:- "./gsk-device/logs:/logs"device-manage-maintain:build:context: ./gsk-maintain/gsk-maintain-bizrestart: alwayscontainer_name: device-manage-maintainhostname: gsk-maintainimage: device-manage-maintainvolumes:- "./gsk-maintain/logs:/logs"device-manage-report:build:context: ./gsk-report/gsk-report-bizrestart: alwayscontainer_name: device-manage-reporthostname: gsk-reportimage: device-manage-reportvolumes:- "./gsk-report/logs:/logs"device-manage-energy:build:context: ./gsk-energy/gsk-energy-bizrestart: alwayscontainer_name: device-manage-energyhostname: gsk-energyimage: device-manage-energyextra_hosts:gsk-rabbitmq: 10.1.1.123volumes:- "./gsk-energy/logs:/logs"device-manage-monitor:build:context: ./gsk-visual/gsk-monitorrestart: alwaysports:- 15001:15001container_name: device-manage-monitorhostname: gsk-monitorimage: device-manage-monitorvolumes:- "./gsk-monitor/logs:/logs"device-manage-alarm:build:context: ./gsk-alarm/gsk-alarm-bizrestart: alwaysports:- 17008:17008container_name: device-manage-alarmhostname: gsk-alarmimage: device-manage-alarmextra_hosts:gsk-host: 10.0.1.175gsk-rabbitmq: 10.1.1.123volumes:- "./gsk-alarm/logs:/logs"#客户端device-manage-front:build:context: ./gsk-nginxrestart: alwayscontainer_name: device-manage-frontimage: device-manage-frontexternal_links:- gsk-gatewayports:- 10082:10082- 10081:10081
10.页面及账号
10-1 页面地址:
- Nacos配置注册中心:
http://10.1.1.31:18848/nacos
账号/密码:nacos/nacos - Spring Boot Admin监控中心:
http://10.1.1.31:15001/
账号/密码:pig/pig - 服务端:
http://10.1.1.31:10081/#/login
账号/密码:admin/123456 - 客户端:
http://10.1.1.31:10082/#/login
11.参考资料
12.运行环境
- 操作系统:CentOS Linux(Red Hat 4.8.5-44)
- CPU:Intel(R) Xeon(R) CPU L5630 @2.13GHz
- 内存:4GB
- 硬盘:32Gb
