【Docker】完整的搭建和发布过程

news2024/11/25 13:48:15

【Docker】完整的搭建和发布过程

  • 【一】shell和ftp工具选择
  • 【二】安装Docker
    • 【1】查看系统的内核版本
    • 【2】yum更新到最新版本
    • 【3】安装Docker所需的依赖包
    • 【4】设置Docker的yum的源
    • 【5】查看仓库所有Docker版本
    • 【6】安装Docker
    • 【7】启动Docker并添加开机自启动
    • 【8】查看Docker版本
    • 【9】卸载Docker
    • 【10】Docker常用命令
  • 【三】安装Portainer
    • 【1】拉取最新的Portainer镜像
    • 【2】运行镜像
    • 【3】访问Portainer可视化界面
    • 【4】一些问题的解决
  • 【四】安装redis
    • (1)准备好redis.conf
    • (2)修改的内容
    • (3)SFTP上传redis.conf
    • (4)启动redis
    • (5)查看Portainer的页面
    • (6)使用本地RDM链接redis
    • (7)使用redis容器的终端链接redis
  • 【五】安装kafka
    • (1)下载镜像
    • (2)启动zookeeper
    • (3)启动kafka
    • (4)防火墙设置
    • (5)kafka日志
    • (6)Kafka 控制台操作
    • (7)待补充
  • 【六】安装mysql
  • 【七】安装xxl-job
    • (1)导入sql
    • (2)安装xxl-job
    • (3)配置任务(待补充)
    • (4)工程配置xxl-job(待补充)
    • (5)测试验证(待补充)
  • 【八】安装nacos

【一】shell和ftp工具选择

选择是的mac版termius

【二】安装Docker

【1】查看系统的内核版本

[root@CodeGuide ~]# uname -r
4.18.0-80.11.2.el8_0.x86_64

执行命令:uname -r
注意:x86 64位系统,如果是32位是不能安装 docker 的

【2】yum更新到最新版本

[root@CodeGuide ~]# sudo yum update
Last metadata expiration check: 1:15:10 ago on Sat 27 Nov 2021 04:22:53 PM CST.
Dependencies resolved.
Nothing to do.
Complete!

执行命令:sudo yum update
注意:看到显示 Complete 就代表完成了,整个过程需要 5-10 分钟左右

【3】安装Docker所需的依赖包

[root@CodeGuide ~]# sudo yum install -y yum-utils device-mapper-persistent-data lvm2
Last metadata expiration check: 1:16:16 ago on Sat 27 Nov 2021 04:22:53 PM CST.
Package yum-utils-4.0.21-3.el8.noarch is already installed.
Package device-mapper-persistent-data-0.9.0-4.el8.x86_64 is already installed.
Package lvm2-8:2.03.12-10.el8.x86_64 is already installed.
Dependencies resolved.
Nothing to

执行命令:sudo yum install -y yum-utils device-mapper-persistent-data lvm2
注意:看到显示 Complete 就代表完成了,整个过程需要 1-3 分钟左右

【4】设置Docker的yum的源

[root@CodeGuide ~]# sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Adding repo from: https://download.docker.com/linux/centos/docker-ce.repo

执行命令:sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

【5】查看仓库所有Docker版本

yum list docker-ce --showduplicates | sort -r

【6】安装Docker

安装默认最新版本的Docker

udo yum install docker-ce

安装指定版本,例如

sudo yum install docker-ce-20.10.11.ce

【7】启动Docker并添加开机自启动

启动Docker

sudo systemctl start docker

设置开机启动Docker

systemctl enable docker

【8】查看Docker版本

docker --version

【9】卸载Docker

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

【10】Docker常用命令

[root@CodeGuide ~]# docker --help				#Docker帮助
[root@CodeGuide ~]# docker --version			#查看Docker版本
[root@CodeGuide ~]# docker search <image>		#搜索镜像文件,如:docker search mysql
[root@CodeGuide ~]# docker pull <image>		#拉取镜像文件, 如:docker pull mysql
[root@CodeGuide ~]# docker images				#查看已经拉取下来的所以镜像文件
[root@CodeGuide ~]# docker rmi <image>		#删除指定镜像文件
[root@CodeGuide ~]# docker run --name <name> -p 80:8080 -d <image>		#发布指定镜像文件
[root@CodeGuide ~]# docker ps					#查看正在运行的所有镜像
[root@CodeGuide ~]# docker ps -a				#查看所有发布的镜像
[root@CodeGuide ~]# docker rm <image>			#删除执行已发布的镜像

【三】安装Portainer

【1】拉取最新的Portainer镜像

docker pull portainer/portainer

【2】运行镜像

docker run -d -p 9000:9000 -v /root/portainer:/data -v /var/run/docker.sock:/var/run/docker.sock --name dev-portainer portainer/portainer

或者

docker run -d --restart=always --name portainer -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer

参数说明:

-d #容器在后台运行
-p 9000:9000 # 宿主机9000端口映射容器中的9000端口
-v /var/run/docker.sock:/var/run/docker.sock # 把宿主机的Docker守护进程(docker daemon)默认监听的Unix域套接字挂载到容器中
-v /root/portainer:/data # 把宿主机目录 /root/portainer 挂载到容器 /data 目录;
–name dev-portainer # 指定运行容器的名称

注意:在启动容器时必须挂载本地 /var/run/docker.socker与容器内的/var/run/docker.socker连接。

【3】访问Portainer可视化界面

(1)浏览器中输入:服务器的ip地址:9000,访问portainer可视化界面
第一次会弹出安装界面,配置账号密码、选择是本地Docker还是远程Docker,一般我们选择本地Docker,也就是local,可以查看宿主机配置信息、查看容器、镜像、网络、卷等相关信息。

在这里插入图片描述
(2)创建登录账号和密码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

【4】一些问题的解决

(1)镜像错误,停掉&删除&重新创建
docker ps 查看正在运行的镜像
docker stop 镜像id 停止正在运行的镜像
docker rm 镜像id 停止正在运行的镜像
(2)9000端口访问不到,测试是否启动成功,以及关闭防火墙
在主机上访问映射了Portainer容器的端口,看容器是否正常运行
curl localhost:9000

由图可知能通过curl命令正常访问8088端口

关闭所有防火墙
service firewalld status
service firewalld stop
(3)

【四】安装redis

(1)准备好redis.conf

下载地址:redis.conf

(2)修改的内容

【必须】bind 127.0.0.1 把#号注释掉这部分,使redis可以外部访问
【必须】daemonize 修改为no 用守护线程的方式启动
【必须】requirepass 设置你的Redis链接密码
【必须】appendonly 修改为yes,redis持久化  默认是no
【可选】tcp-keepalive 300 防止出现远程主机强迫关闭了一个现有的连接的错误 默认是300

(3)SFTP上传redis.conf

在 SFTP 工具链接的云服务器中创建文件夹 /data/redis、/data/redis/data 你也可以在云服务器的控制台使用命令进行创建:sudo mkdir /data/redis、sudo mkdir /data/redis/data

把修改后的 redis.conf 文件通过 SFTP 上传到 /data/redis 文件夹下
在这里插入图片描述

(4)启动redis

docker run -p 6379:6379 --name redis -v /data/redis/redis.conf:/etc/redis/redis.conf  -v /data/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes

解释

-p 6379:6379:把容器内的6379端口映射到宿主机6379端口
-v /data/redis/redis.conf:/etc/redis/redis.conf:把宿主机配置好的redis.conf放到容器内的这个位置中
-v /data/redis/data:/data:把redis持久化的数据在宿主机内显示,做数据备份
redis-server /etc/redis/redis.conf:这个是关键配置,让redis不是无配置启动,而是按照这个redis.conf的配置启动
–appendonly yes:redis启动后数据持久化

查看

sudo docker ps

在这里插入图片描述

查看日志

sudo docker logs redis

在这里插入图片描述
没有报错,启动成功

(5)查看Portainer的页面

在这里插入图片描述

(6)使用本地RDM链接redis

这个时候你可能还是链接不上云服务器中的 Redis 服务,那么需要设置下防火墙,默认情况下可能你的防火墙并没有开启,需要手动执行:
1-启动防火墙 systemctl start firewalld
2-设置Redis 6379 端口:firewall-cmd --zone=public --add-port=6379/tcp --permanent
3-设置Portainer 9000 端口:firewall-cmd --zone=public --add-port=9000/tcp --permanent
4-重新加载:firewall-cmd --reload

配置redis
在这里插入图片描述
测试redis
在这里插入图片描述

(7)使用redis容器的终端链接redis

docker exec -it redis /bin/bash

在这里插入图片描述

【五】安装kafka

(1)下载镜像

docker pull wurstmeister/kafka
docker pull wurstmeister/zookeeper

(2)启动zookeeper

docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper

(3)启动kafka

docker run -d --name kafka \
-p 9092:9092 \
-e KAFKA_BROKER_ID=0 \
-e KAFKA_ZOOKEEPER_CONNECT=换成你的服务器IP:2181 \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://换成你的服务器IP:9092 \
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 wurstmeister/kafka

把这个整体命令复制到后台运行,运行前要把服务器IP换成你的

(4)防火墙设置

这里我们需要把 Zookeeper、Kafka 的端口对外开放;
1-设置zk 2181 端口:firewall-cmd --zone=public --add-port=2181/tcp --permanent
2-设置Kafka 9092 端口:firewall-cmd --zone=public --add-port=9092/tcp --permanent
3-重新加载:firewall-cmd --reload

(5)kafka日志

在这里插入图片描述在这里插入图片描述在 Docker 容器中可以点击 Kafka 进入日志查看和控制台操作

(6)Kafka 控制台操作

在这里插入图片描述
在 Kafka 控制台可以操作配置文件,查看日志,添加Topic

创建topic lottery_activity_partake

in/kafka-topics.sh --create --zookeeper 172.17.0.3:2181 --replication-factor 1 --partitions 1 --topic lottery_activity_partake

创建topic lottery_invoice

bin/kafka-topics.sh --create --zookeeper 172.17.0.3:2181 --replication-factor 1 --partitions 1 --topic lottery_invoice

创建Topic的时候,地址需要换成自己zookeeper的地址

(7)待补充

客户端操作
图形化管理工具

【六】安装mysql

(1)拉取镜像:docker pull mysql:5.7
(2)查看本地镜像:docker images
(3)创建一个mysql容器,首先在根目录下创建好一个文件夹allenuse
在这里插入图片描述

(4)运行容器:docker run -d -p 3306:3306 --privileged=true -v /allenuse/mysql/log:/var/log/mysql -v /allenuse/mysql/data:/var/lib/mysql -v /allenuse/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7

如果报错的话,可能是端口3306被占用了,就用下面的命令解决
1-先查看当前占用端口:netstat -tanlp
2-杀死对应的进程:kill 1330
在这里插入图片描述(5)查看是否创建成功
1-查看容器:docker ps 或者 docker ps -a
2-查看启动日志:docker logs mysql

(6)新建my.cnf,通过容器卷同步给mysql容器实例(解决中文乱码问题)
在这里插入图片描述

[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8

(7)重启mysql容器实例,再重新进入并查看字符编码
1-重启:docker restart mysql
2-查看字符编码:docker exec -it mysql /bin/bash

在这里插入图片描述(8)新建库新建表再插入中文测试

(9)如果不小心把mysql的容器删除了如何恢复
之前已经配置了容器卷,mysql的数据已经在本地存储了,只需要重新执行创建容器的命令就行了

docker run -d -p 3306:3306 --privileged=true -v /allenuse/mysql/log:/var/log/mysql -v /allenuse/mysql/data:/var/lib/mysql -v /allenuse/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7

(10)防火墙设置
1-设置mysql 3306 端口:firewall-cmd --zone=public --add-port=3306/tcp --permanent
2-重新加载:firewall-cmd --reload

(11)本地连接
在这里插入图片描述
在这里插入图片描述

【七】安装xxl-job

(1)导入sql

在 Docker 容器中部署 xxl-job,在部署之前我们需要一个 Mysql 的环境,这个环境我们已经在上一章节中安装完成。

本章节下载了 xxl-job 2.1.2 对应 SQL 文件已经存放到这里,你可以直接打开使用

/*
 Navicat Premium Data Transfer

 Source Server         : localhost
 Source Server Type    : MySQL
 Source Server Version : 50639
 Source Host           : localhost:3306
 Source Schema         : xxl_job

 Target Server Type    : MySQL
 Target Server Version : 50639
 File Encoding         : 65001

 Date: 04/12/2021 16:28:12
*/

create database xxl_job;

USE xxl_job;

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for xxl_job_group
-- ----------------------------
DROP TABLE IF EXISTS `xxl_job_group`;
CREATE TABLE `xxl_job_group` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `app_name` varchar(64) NOT NULL COMMENT '执行器AppName',
  `title` varchar(12) NOT NULL COMMENT '执行器名称',
  `address_type` tinyint(4) NOT NULL DEFAULT '0' COMMENT '执行器地址类型:0=自动注册、1=手动录入',
  `address_list` text COMMENT '执行器地址列表,多地址逗号分隔',
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;

-- ----------------------------
-- Records of xxl_job_group
-- ----------------------------
BEGIN;
INSERT INTO `xxl_job_group` VALUES (1, 'xxl-job-executor-sample', '示例执行器', 0, NULL, '2021-11-20 20:28:29');
INSERT INTO `xxl_job_group` VALUES (2, 'lottery-job', '抽奖系统任务调度', 0, NULL, '2021-11-20 20:28:29');
COMMIT;

-- ----------------------------
-- Table structure for xxl_job_info
-- ----------------------------
DROP TABLE IF EXISTS `xxl_job_info`;
CREATE TABLE `xxl_job_info` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `job_group` int(11) NOT NULL COMMENT '执行器主键ID',
  `job_desc` varchar(255) NOT NULL,
  `add_time` datetime DEFAULT NULL,
  `update_time` datetime DEFAULT NULL,
  `author` varchar(64) DEFAULT NULL COMMENT '作者',
  `alarm_email` varchar(255) DEFAULT NULL COMMENT '报警邮件',
  `schedule_type` varchar(50) NOT NULL DEFAULT 'NONE' COMMENT '调度类型',
  `schedule_conf` varchar(128) DEFAULT NULL COMMENT '调度配置,值含义取决于调度类型',
  `misfire_strategy` varchar(50) NOT NULL DEFAULT 'DO_NOTHING' COMMENT '调度过期策略',
  `executor_route_strategy` varchar(50) DEFAULT NULL COMMENT '执行器路由策略',
  `executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler',
  `executor_param` varchar(512) DEFAULT NULL COMMENT '执行器任务参数',
  `executor_block_strategy` varchar(50) DEFAULT NULL COMMENT '阻塞处理策略',
  `executor_timeout` int(11) NOT NULL DEFAULT '0' COMMENT '任务执行超时时间,单位秒',
  `executor_fail_retry_count` int(11) NOT NULL DEFAULT '0' COMMENT '失败重试次数',
  `glue_type` varchar(50) NOT NULL COMMENT 'GLUE类型',
  `glue_source` mediumtext COMMENT 'GLUE源代码',
  `glue_remark` varchar(128) DEFAULT NULL COMMENT 'GLUE备注',
  `glue_updatetime` datetime DEFAULT NULL COMMENT 'GLUE更新时间',
  `child_jobid` varchar(255) DEFAULT NULL COMMENT '子任务ID,多个逗号分隔',
  `trigger_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '调度状态:0-停止,1-运行',
  `trigger_last_time` bigint(13) NOT NULL DEFAULT '0' COMMENT '上次调度时间',
  `trigger_next_time` bigint(13) NOT NULL DEFAULT '0' COMMENT '下次调度时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4;

-- ----------------------------
-- Records of xxl_job_info
-- ----------------------------
BEGIN;
INSERT INTO `xxl_job_info` VALUES (1, 1, '测试任务1', '2018-11-03 22:21:31', '2021-11-06 14:54:29', 'XXL', '', 'CRON', '0/1 * * * * ?', 'DO_NOTHING', 'FIRST', 'demoJobHandler', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2018-11-03 22:21:31', '', 1, 1637411338000, 1637411339000);
INSERT INTO `xxl_job_info` VALUES (2, 2, '活动状态扫描', '2021-11-06 11:43:49', '2021-11-13 10:19:56', '小傅哥', '', 'CRON', '0/1 * * * * ?', 'DO_NOTHING', 'FIRST', 'lotteryActivityStateJobHandler', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2021-11-06 11:43:49', '', 0, 0, 0);
INSERT INTO `xxl_job_info` VALUES (3, 2, '扫描用户抽奖奖品发放MQ状态补偿', '2021-11-13 10:23:59', '2021-11-13 13:47:26', '小傅哥', '', 'CRON', '0/5 * * * * ?', 'DO_NOTHING', 'FIRST', 'lotteryOrderMQStateJobHandler', '1', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2021-11-13 10:23:59', '', 0, 0, 0);
COMMIT;

-- ----------------------------
-- Table structure for xxl_job_lock
-- ----------------------------
DROP TABLE IF EXISTS `xxl_job_lock`;
CREATE TABLE `xxl_job_lock` (
  `lock_name` varchar(50) NOT NULL COMMENT '锁名称',
  PRIMARY KEY (`lock_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- ----------------------------
-- Records of xxl_job_lock
-- ----------------------------
BEGIN;
INSERT INTO `xxl_job_lock` VALUES ('schedule_lock');
COMMIT;

-- ----------------------------
-- Table structure for xxl_job_log
-- ----------------------------
DROP TABLE IF EXISTS `xxl_job_log`;
CREATE TABLE `xxl_job_log` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `job_group` int(11) NOT NULL COMMENT '执行器主键ID',
  `job_id` int(11) NOT NULL COMMENT '任务,主键ID',
  `executor_address` varchar(255) DEFAULT NULL COMMENT '执行器地址,本次执行的地址',
  `executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler',
  `executor_param` varchar(512) DEFAULT NULL COMMENT '执行器任务参数',
  `executor_sharding_param` varchar(20) DEFAULT NULL COMMENT '执行器任务分片参数,格式如 1/2',
  `executor_fail_retry_count` int(11) NOT NULL DEFAULT '0' COMMENT '失败重试次数',
  `trigger_time` datetime DEFAULT NULL COMMENT '调度-时间',
  `trigger_code` int(11) NOT NULL COMMENT '调度-结果',
  `trigger_msg` text COMMENT '调度-日志',
  `handle_time` datetime DEFAULT NULL COMMENT '执行-时间',
  `handle_code` int(11) NOT NULL COMMENT '执行-状态',
  `handle_msg` text COMMENT '执行-日志',
  `alarm_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '告警状态:0-默认、1-无需告警、2-告警成功、3-告警失败',
  PRIMARY KEY (`id`),
  KEY `I_trigger_time` (`trigger_time`),
  KEY `I_handle_code` (`handle_code`)
) ENGINE=InnoDB AUTO_INCREMENT=56303 DEFAULT CHARSET=utf8mb4;

-- ----------------------------
-- Records of xxl_job_log
-- ----------------------------
BEGIN;
COMMIT;

-- ----------------------------
-- Table structure for xxl_job_log_report
-- ----------------------------
DROP TABLE IF EXISTS `xxl_job_log_report`;
CREATE TABLE `xxl_job_log_report` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `trigger_day` datetime DEFAULT NULL COMMENT '调度-时间',
  `running_count` int(11) NOT NULL DEFAULT '0' COMMENT '运行中-日志数量',
  `suc_count` int(11) NOT NULL DEFAULT '0' COMMENT '执行成功-日志数量',
  `fail_count` int(11) NOT NULL DEFAULT '0' COMMENT '执行失败-日志数量',
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `i_trigger_day` (`trigger_day`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4;

-- ----------------------------
-- Records of xxl_job_log_report
-- ----------------------------
BEGIN;
INSERT INTO `xxl_job_log_report` VALUES (1, '2021-11-06 00:00:00', 0, 133, 17686, NULL);
INSERT INTO `xxl_job_log_report` VALUES (2, '2021-11-05 00:00:00', 0, 0, 0, NULL);
INSERT INTO `xxl_job_log_report` VALUES (3, '2021-11-04 00:00:00', 0, 0, 0, NULL);
INSERT INTO `xxl_job_log_report` VALUES (4, '2021-11-13 00:00:00', 0, 6, 13177, NULL);
INSERT INTO `xxl_job_log_report` VALUES (5, '2021-11-12 00:00:00', 0, 0, 0, NULL);
INSERT INTO `xxl_job_log_report` VALUES (6, '2021-11-11 00:00:00', 0, 0, 0, NULL);
INSERT INTO `xxl_job_log_report` VALUES (7, '2021-11-20 00:00:00', 0, 0, 25195, NULL);
INSERT INTO `xxl_job_log_report` VALUES (8, '2021-11-19 00:00:00', 0, 0, 0, NULL);
INSERT INTO `xxl_job_log_report` VALUES (9, '2021-11-18 00:00:00', 0, 0, 0, NULL);
COMMIT;

-- ----------------------------
-- Table structure for xxl_job_logglue
-- ----------------------------
DROP TABLE IF EXISTS `xxl_job_logglue`;
CREATE TABLE `xxl_job_logglue` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `job_id` int(11) NOT NULL COMMENT '任务,主键ID',
  `glue_type` varchar(50) DEFAULT NULL COMMENT 'GLUE类型',
  `glue_source` mediumtext COMMENT 'GLUE源代码',
  `glue_remark` varchar(128) NOT NULL COMMENT 'GLUE备注',
  `add_time` datetime DEFAULT NULL,
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- ----------------------------
-- Records of xxl_job_logglue
-- ----------------------------
BEGIN;
COMMIT;

-- ----------------------------
-- Table structure for xxl_job_registry
-- ----------------------------
DROP TABLE IF EXISTS `xxl_job_registry`;
CREATE TABLE `xxl_job_registry` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `registry_group` varchar(50) NOT NULL,
  `registry_key` varchar(255) NOT NULL,
  `registry_value` varchar(255) NOT NULL,
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `i_g_k_v` (`registry_group`,`registry_key`(191),`registry_value`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- ----------------------------
-- Records of xxl_job_registry
-- ----------------------------
BEGIN;
COMMIT;

-- ----------------------------
-- Table structure for xxl_job_user
-- ----------------------------
DROP TABLE IF EXISTS `xxl_job_user`;
CREATE TABLE `xxl_job_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) NOT NULL COMMENT '账号',
  `password` varchar(50) NOT NULL COMMENT '密码',
  `role` tinyint(4) NOT NULL COMMENT '角色:0-普通用户、1-管理员',
  `permission` varchar(255) DEFAULT NULL COMMENT '权限:执行器ID列表,多个逗号分割',
  PRIMARY KEY (`id`),
  UNIQUE KEY `i_username` (`username`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;

-- ----------------------------
-- Records of xxl_job_user
-- ----------------------------
BEGIN;
INSERT INTO `xxl_job_user` VALUES (1, 'admin', 'e10adc3949ba59abbe56e057f20f883e', 1, NULL);
COMMIT;

SET FOREIGN_KEY_CHECKS = 1;

我们使用本地 SQL 链接工具,并创建 xxl-job 库已经导入 xxl-job.sql 文件
在这里插入图片描述

(2)安装xxl-job

(1)拉取镜像:docker pull xuxueli/xxl-job-admin:2.3.0
(2)部署(修改成你的数据库服务器IP、账号、密码、accessToken):docker run -e PARAMS=" --server.port=7397 --spring.datasource.url=jdbc:mysql://172.17.0.6:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8 --spring.datasource.username=root --spring.datasource.password=123456 --xxl.job.accessToken=xdsl3ewi3al1oehxmo68pqxer" -p 7397:7397 -v /logs/xxl-job:/data/applogs --name xxl-job-admin --restart=always -d xuxueli/xxl-job-admin:2.3.0
(3)查看日志
在这里插入图片描述
(4)打开xxl-job的后台
http://你的ip:7397/xxl-job-admin/
在这里插入图片描述

(3)配置任务(待补充)

(4)工程配置xxl-job(待补充)

(5)测试验证(待补充)

【八】安装nacos

(1)拉取镜像:docker pull nacos/nacos-server
(2)安装部署:docker run -d -p 8848:8848 --env MODE=standalone --name nacos nacos/nacos-server

(3)打开链接:http://服务器IP:8848/nacos/ - 账号:nacos 密码:nacos
在这里插入图片描述
(4)访问出现问题
[root@allen02 conf]# curl http://192.168.19.22:8848/nacos/#/login
curl: (7) Failed connect to 192.168.19.22:8848; Connection refused

防火墙已经关了,重启docker,过了一会又好了

(5)本地配置(待补充)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/724925.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

秋招提前批!大厂offer的捷径!

前言 又是一年秋招季&#xff01;年年岁岁花相似&#xff0c;岁岁年年人不同。 今天&#xff0c;博主在牛客上看到一个帖子&#xff0c;24届校招提前批已经开始了&#xff01; 24届大厂提前批 首先&#xff0c;跟大家科普一下提前批的概念&#xff0c;提前批是指企业在校园招…

TCP / IP 参考模型

TCP / IP 参考模型 5层参考模型5层参考模型5层模型的数据封装 5层参考模型 5层参考模型 综合 OSI 和 TCP/IP 的优点应用层: 支持各种网络应用 FTP, SMTP, HTTP 传输层: 进程-进程的数据传输 TCP, UDP 网络层: 源主机到目的主机的数据分组路由与转发 IP协议、路由协议等 链路层…

C语言入门篇(六)

前言   C 语言支持数组数据结构&#xff0c;数组是用来存储一系列数据&#xff0c;而且是一系列相同类型的变量。 数组 1. 一维数组1.1 数组的创建1.2 数组的初始化1.3 数组的使用1.4 数组在内存中的存储 2. 二维数组1.1 数组的创建1.2 数组的初始化1.3 数组的使用1.4 数组在…

23款奔驰GLS400升级柏林之声音响系统+HUD抬头显示系统

奔驰GLS400升级柏林之声的音响效果自然非同凡响&#xff0c;在人声、交响乐音乐厅感受方面都有非常逼真的现场感受&#xff0c;结合柏林之声的界面调整&#xff0c;可以在不同方位体验的高保真的音乐之享&#xff01; 强悍的显示效果&#xff0c;让您在动感中驾驭乐趣&#xff…

MinIO简单安装及使用

MinIO简介 MinIO是一个开源的、云原生的对象存储服务器&#xff0c;它提供了简单、高性能、安全、可扩展的存储服务。MinIO最初是作为一个Amazon S3兼容的对象存储服务器开发的&#xff0c;可以通过S3 API与其他应用程序和服务进行交互。MinIO支持分布式部署&#xff0c;可以在…

[HFCTF 2021] final web复现

我坐着什么都没做&#xff0c;因为我有太多事情要做.......&#x1f62d; (bushi) (1) tinypng(Laravel rce phar反序列化) 是一个laravel框架项目 看一下路由 <?phpuse Illuminate\Support\Facades\Route;/* |-----------------------------------------------------…

Jpa列表查询@OneToOne,@OneToMany出现多条sql(N+1)解决办法

最近用了jpa的OneToOne&#xff0c;OneToMany管理对象&#xff0c;但是在查询分页列表&#xff0c;列表的过程中触发了N1的sql查询&#xff0c;这里我用了NamedEntityGraphs去解决 实体关系 1.父实体 /*** 规则配置** author lyj* date 2023-07-06*/ Getter Setter Entity T…

计算机体系结构基础知识介绍之缓存性能的十大进阶优化之减少命中时间和流水线访问和多组缓存增加带宽(三)

优化二&#xff1a;减少命中时间的方式预测 路预测是一种高速缓存优化技术&#xff0c;它在高速缓存中保存额外的位来预测下一次高速缓存访问的路&#xff08;或者组内的块&#xff09;。这种预测可以提前设置多路选择器来选择期望的块&#xff0c;并且在那个时钟周期内&#…

ModaHub魔搭社区:ChatGLM 集成进LangChain的教程

目录 接入自己的LLM 搭建ChatGLM的api 封装ChatGLM的LLM 测试 总结 参考 最新一段时间一直在学习LangChain相关的文档&#xff0c;发现LangChain提供了非常丰富的生态&#xff0c;并且也可以让业务非常方便的封装自己的工具&#xff0c;接入到LangcChain的生态中&#xf…

Hystrix前言--什么是服务雪崩

什么是服务雪崩 这是在高并发的前提下&#xff0c;比如A、B只有100个线程&#xff0c;都在做这样一个操作&#xff0c;100个线程不能回收&#xff0c;当第101个客户来访问的时候直接报503。 服务雪崩的本质&#xff1a;线程没有及时回收。 不管是调用成功还是失败&#xff0c;只…

干货整理,Selenium 自动化测试常见异常问题 +解决方法(详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 异常1&#xff1a…

SpringIoc容器之Aware | 京东云技术团队

1 前言 Aware是Spring提供的一个标记超接口&#xff0c;指示bean有资格通过回调样式的方法由Spring容器通知特定的框架对象&#xff0c;以获取到容器中特有对象的实例的方法之一。实际的方法签名由各个子接口确定&#xff0c;但通常只包含一个接受单个参数的void返回方法。 2…

【接口测试】Postman —— 接口测试知识准备

1.0 前言 ​应用程序编程接口&#xff08;Application Programming Interface, API&#xff09;是这些年来最流行的技术之一&#xff0c;强大的Web应用程序和领先的移动应用程序都离不开后端强大的API。API技术的应用给系统开发带来了便利&#xff0c;但也对测试人员提出了更高…

[JAVA数据结构]HashMap

目录 1.HashMap 1.1Map的常用方法 1.2HashMap的使用案例 1.HashMap 基于哈希表的实现的Map接口。 Map底层结构HashMap底层结构哈希桶插入/删除/查找时间复杂度O(1)是否有序无序线程安全不安全插入/删除/查找区别通过哈希函数计算哈希地址比较与覆写自定义类型需要覆写equal…

leetcode.1504. 统计全 1 子矩形(单调栈-java)

统计全 1 子矩形 leetcode.1504. 统计全 1 子矩形题目描述单调栈解题代码演示 单调栈专题 leetcode.1504. 统计全 1 子矩形 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/count-submatrices-with-all-ones 题目描述 给…

pytest之配置文件pytest.ini

前言&#xff1a; pytest.ini文件是pytest的主配置文件&#xff0c;可以改变pytest的运行方式&#xff0c;它是一个固定的文件pytest.ini文件&#xff0c;读取配置信息&#xff0c;按指定的方式去运行。 pytest.ini文件的位置一般放在项目的根目录下&#xff0c;不能随便放&a…

Vant入门介绍

Vant 介绍 Vant是有赞开源的一套基于Vue2.0的Mobile组件库。Vant 是一套轻量、可靠的移动端组件库。通过 Vant&#xff0c;可以搭建出风格统一的&#xff0c;提升开发效率。通过Vant,可以搭建出风格统一的,提升开发效率。目前已有近50个组件,这些组件被广泛使用于有赞的各个移…

LVS-DR排错思路

一.LVS-DR实验排错思路 1.案例架构图 DR服务器&#xff1a;192.168.27.11 web服务器1&#xff1a;192.168.27.12 web服务器2&#xff1a;192.168.27.13 vip&#xff1a;192.168.27.180 客户端&#xff1a;192.168.27.2 1&#xff1a;配置负载调度器&#xff1a;&#xff…

【集群】脑裂是什么?Zookeeper是如何解决的?

文章目录 什么是脑裂Zookeeper集群中的脑裂场景过半机制 什么是脑裂 脑裂(split-brain)就是“大脑分裂”&#xff0c;也就是本来一个“大脑”被拆分了两个或多个“大脑”&#xff0c;我们都知道&#xff0c;如果一个人有多个大脑&#xff0c;并且相互独立的话&#xff0c;那么…

[HDCTF2019]MFC

前言 mfc逆向&#xff0c;有一个VM壳一看到它就头疼&#xff0c;好在这道题用不到&#xff0c;可以直接通过xspy获取mfc自定义消息 分析 工具下载&#xff1a; https://bbs.kanxue.com/thread-170033.htm 开始时完全没有头绪&#xff0c;有虚拟壳&#xff0c;用ida打开也看…