前言
在上一节交代,之所以需要维护一张docker容器信息表,是为了做到ip和port等信息的统一分发与管理。
SQL语句
话不多说,直接贴创建语句:
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for dockers_detail
-- ----------------------------
CREATE DATABASE `devops`;
USE `devops`;
DROP TABLE IF EXISTS `dockers_detail`;
CREATE TABLE `dockers_detail` (
`UPDATE_TIME` datetime NOT NULL COMMENT '更新日期',
`IMAGE` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'docker镜像',
`DOCKER_VERSION` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'docker版本',
`HOST_NAME` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'docker容器主机名',
`CONTAINER_NAME` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'docker容器名',
`NETWORK_NAME` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'network名',
`IP` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'docker ip',
`C_PORT` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '容器端口号',
`CPU` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '分配docker容器core数',
`MEMORY` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '分配docker容器内存',
`HOST` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '宿主机',
`D_PORT` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '宿主机端口号',
PRIMARY KEY (`CONTAINER_NAME`, `IP`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = 'docker容器信息明细表' ROW_FORMAT = Compact;
SET FOREIGN_KEY_CHECKS = 1;
将以上语句直接在命令行或其他远程连接软件(如navicat)中执行一遍即可。
布置脚本
可以在我的资源页面中找到“gitlab+jenkins+docker自动化部署脚本”,然后拖到opt目录下解压:
可以看到automation和jdk1.8.0_191两个文件夹,我们先赋予jdk1.8.0_191权限(一定要做):
[root@JackRoy opt] chmod -R 777 jdk1.8.0_191
再将上节配置的mysql ip修改一下,执行:
[root@JackRoy ~]# vim /opt/automation/docker_job/docker_ssh.sh
修改IP为宿主机IP,密码修改为自己设置的root密码:
执行:
[root@JackRoy ~]# vim /opt/automation/docker_job/deploy/start.sh
修改IP为宿主机IP,密码修改为自己设置的root密码:
执行:
[root@JackRoy ~]# vim /opt/automation/deploy/cleanTable.sh
修改IP为宿主机IP,密码修改为自己设置的root密码:
可能你在观察这个目录结构和文件分布会觉得很冗余,笔者在这里解释一下,因为这个自动化部署分了联机版(多台机器部署)和单机版,所以在一开始就有主从的设计在里面,这里只介绍单机版即主、从的代码放在一起了。
信息收集
依次执行:
pip install mysql
sh /opt/automation/docker_job/docker_ssh.sh
去往navicat上查看:
docker容器信息收集成功,So你可以将“sh /opt/automation/docker_job/docker_ssh.sh”配置到crontable中,定时收集
后记
下一节将介绍项目自动化部署脚本逻辑。
跳转
第一节 基础环境介绍与准备
第二节 docker版gitlab安装和配置
第三节 docker版jenkins安装和配置
第四节 docker版mysql安装和配置
第五节 docker信息明细表设计与实现(含收集脚本)
第六节 docker容器自动化生成脚本
第七节 自动生成docker容器并启动项目