目录
- 1.安装JDK (非docker)
- 1.1 将文件放在目录下: /usr/local/jdk
- 1.2 解压至当前目录
- 1.3 配置环境变量
- 2.安装docker
- 2.1 验证centos内核
- 2.2 安装软件工具包
- 2.3 设置yum源
- 2.4 查看仓库中所有docker版本,按需选择安装
- 2.5 安装docker
- 2.6 启动docker 并 开机启动
- 2.7 验证
- 3 docker安装mysql 5.7
- 3.1 安装指定版本
- 3.2 可能报错
- 3.3 解决
- 3.4 查看是否成功拉取mysql
- 3.5 创建实例并且启动
- 3.5.1先创建映射文件夹
- 3.5.2 将文件放入 /mydata/mysql/conf
- 3.6 查看mysql运行情况
- 3.7 进入容器终端
- 3.8 设置随着docker 启动自启
- 3.9 Nivicat 工具无法连接情况
- 3.9.1 检查ip是否被拦截,手机开热点试一下
- 3.9.2 检查防火墙
- 3.9.2.1防火墙相关命令
- 4 docker 安装redis
- 4.1 创建映射文件夹
- 4.2 创建实例并启动
- 4.3 验证
- 4.3 第三方工具连接
- 4.3.1 检查防火墙是否放行 6379端口
- 5. docker 安装 JDK 8
- 5.1 拉取jdk8镜像
- 5.2 启动jdk
- 5.3 设置jdk8自启
- 5.4 查看版本
- 6 docker 安装nginx
- 6.1 拉取nginx 镜像
- 6.2 创建映射文件
- 6.3 先启动ng,将容器中配置文件复制到创建的映射文件夹中
- 6.4 删除原先容器
- 6.4启动 nginx
- 6.5 设置自启
- 6.6验证
- 6.7 本机访问(浏览器输入地址)
- 6.7.1 防火墙放开端口9999
- 6.7.1 解决欢迎页面中文乱码 (可忽略)
- 7.docker 安装MinIo
- 7.1 拉取镜像
- 7.2 创建映射文件
- 7.3 创建实例并启动
- 7.3防火墙开放端口 19090 19000
- 7.4验证,浏览器输入访问 19090 客户端端口,19000 api端口
- 8 docker安装nacos 2.1.1
- 8.1 拉取镜像
- 8.2 创建映射挂载目录
- 8.3 先启动容器,将容器中配置文件复制到创建的映射文件夹中
- 8.4 删除刚才启动的nacos容器
- 8.5mysql数据库配置
- 8.5.1 打开前面从容器复制到 conf 里的文件,通过navicat将 .sql 文件导入至数据库
- 8.5.2 修改配置文件
- 8.6 创建实例并启动
- 8.7 防火墙开放 8848 9848 9849端口
- 8.7 验证 (浏览器访问)
- 9. docker安装其他
- 10. 微服务部署 (一个个Dockerfile)
- 10.1 创建映射文件夹
- 10.2 在对应映射文件创建Dockerfile文件
- 10.3 上传需部署jar至相应映射文件夹下,与Dockerfile同级
- 10.4 构建镜像
- 10.5 映射目录卷并启动
- 10.6 重新启动(下一次替换包)
- 其他服务
- 部署服务遇到的坑
- 微服务部署(一次性,compose)
1.安装JDK (非docker)
1.1 将文件放在目录下: /usr/local/jdk
1.2 解压至当前目录
tar -zxvf jdk-8u221-linux-x64.tar.gz
1.3 配置环境变量
步骤1: vim /etc/profile
步骤2: shift + g 定位到最后一行
步骤3:按 a 获取 i 编辑
步骤4: 添加配置
步骤5:按Esc键 输入:wq 保存并退出
步骤6:source /etc/profile
步骤7: java -version 验证
export JAVA_HOME=/usr/local/jdk/jdk1.8.0_191
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tool.jar
2.安装docker
2.1 验证centos内核
Docker 要求 CentOS 系统的内核版本高于 3.10
uname -r
2.2 安装软件工具包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
2.3 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
或者 使用阿里镜像,上下两种选一个
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2.4 查看仓库中所有docker版本,按需选择安装
yum list docker-ce --showduplicates | sort -r
2.5 安装docker
这边直接安装最新
yum install docker-ce
或
下面这个 -y 安装过程中不需要手动输入 y
yum install -y docker-ce
2.6 启动docker 并 开机启动
systemctl start docker
systemctl enable docker
额外命名:重启docker
systemctl restart docker
2.7 验证
docker version
3 docker安装mysql 5.7
3.1 安装指定版本
docker pull mysql:5.7
3.2 可能报错
Error response from daemon: Get "https://registry-1.docker.io/v2/": dial tcp 128.242.245.93:443: i/o
3.3 解决
root 执行命令
touch /etc/docker/daemon.json
chmod 777 -R /etc/docker/daemon.json
vi /etc/docker/daemon.json
daemon.json添加以下内容:
{"registry-mirrors": ["https://docker-proxy.741001.xyz","https://registry.docker-cn.com"]
}
再次执行命令
systemctl restart docker
systemctl daemon-reload
最后再拉取 docker pull mysql:5.7
参考文章: docker拉取报错
3.4 查看是否成功拉取mysql
docker images
3.5 创建实例并且启动
3.5.1先创建映射文件夹
mkdir -p -m 777 /mydata/mysql/data
mkdir -p -m 777 /mydata/mysql/conf
mkdir -p -m 777 /mydata/mysql/log
要是输入命令没有创建成功,就一层一层 mkdir 创建
3.5.2 将文件放入 /mydata/mysql/conf
vim /mydata/mysql/conf/my.cnf
输入内容
[client]
default-character-set=utf8mb4[mysql]
default-character-set=utf8mb4[mysqld]
lower_case_table_names=1
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
init_connect="SET collation_connection = utf8mb4_unicode_ci"
init_connect="SET NAMES utf8mb4"
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
启动mysql
docker run -d -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql/conf.d \
--restart=always \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7
3.6 查看mysql运行情况
docker ps
3.7 进入容器终端
docker ps -a
docker exec -it mysql /bin/bash 或者 docker exec -it 容器id /bin/bash
登录mysql
3.8 设置随着docker 启动自启
docker update --restart=always mysql
3.9 Nivicat 工具无法连接情况
3.9.1 检查ip是否被拦截,手机开热点试一下
3.9.2 检查防火墙
3.9.2.1防火墙相关命令
# 查看状态
systemctl status firewalld
# 关闭防火墙
systemctl stop firewalld
#开启防火墙
systemctl start firewalld
#开机启用
systemctl enable firewalld
#开机禁用
systemctl disable firewalld
#检查是否放行某个端口
firewall-cmd --query-port=端口号/tcp
#放行某个端口
firewall-cmd --zone=public --add-port=端口号/tcp --permanent
# 重启
firewall-cmd --reload
- 直接先关闭防火墙试试
- 检查是否允许3306端口通过防火墙
firewall-cmd --query-port=3306/tcp
no: 未开放
- 通过firewall-cmd开放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
- 重启
firewall-cmd --reload
重启后 再次查看,yes 显示开放了
这样第三方工具就可以连 mysql了,不行就开热点试一下【要是开热点可以,那就是网络禁止访问了(比如是公司内网环境)】
4 docker 安装redis
docker pull redis:6.2.6
4.1 创建映射文件夹
mkdir -p /mydata/redis/conf
mkdir -p /mydata/redis/data
要是没有创建成功,可以一级一级创建 mkdir xxx
然后在conf目录下创建redis.conf文件
touch redis.conf
填写配置
# Redis服务器配置 # 绑定IP地址
#解除本地限制 注释bind 127.0.0.1
#bind 127.0.0.1 # 服务器端口号
port 6379 #配置密码,不要可以删掉
requirepass 123456#这个配置不要会和docker -d 命令 冲突
# 服务器运行模式,Redis以守护进程方式运行,默认为no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程,改为yes会使配置文件方式启动redis失败,如果后面redis启动失败,就将这个注释掉
daemonize no#当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定(自定义)
#pidfile /data/dockerData/redis/run/redis6379.pid #默认为no,redis持久化,可以改为yes
appendonly yes#当客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能
timeout 60
# 服务器系统默认配置参数影响 Redis 的应用
maxclients 10000
tcp-keepalive 300#指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合(分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改)
save 900 1
save 300 10
save 60 10000# 按需求调整 Redis 线程数
tcp-backlog 511# 设置数据库数量,这里设置为16个数据库
databases 16# 启用 AOF, AOF常规配置
appendonly yes
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb# 慢查询阈值
slowlog-log-slower-than 10000
slowlog-max-len 128# 是否记录系统日志,默认为yes
syslog-enabled yes #指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose
loglevel notice# 日志输出文件,默认为stdout,也可以指定文件路径
logfile stdout# 日志文件
#logfile /var/log/redis/redis-server.log# 系统内存调优参数
# 按需求设置
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
4.2 创建实例并启动
docker run -d -p 6379:6379 --name redis \-v /mydata/redis/data:/data \-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \-d redis:6.2.6 redis-server /etc/redis/redis.conf
设置自启
docker update redis --restart=always
4.3 验证
进入Redis容器
docker exec -it redis bash
连接redis
redis-cli
输入密码 [前边配置文件设置的]
auth 123456
进行简单测试
4.3 第三方工具连接
4.3.1 检查防火墙是否放行 6379端口
防火墙相关命令: 参考本文标题 3.9.2.1 防火墙相关命令
firewall-cmd --query-port=6379/tcp
no:未放行,设置放行,重启防火墙
5. docker 安装 JDK 8
5.1 拉取jdk8镜像
docker pull openjdk:8
5.2 启动jdk
docker run -d -it --name jdk8 openjdk:8
5.3 设置jdk8自启
docker update jdk8--restart=always
5.4 查看版本
直接java -version ,显示的是没有在docker内安装 jdk 的版本 安装参考本文标题 1.安装JDK (非docker)
所以查看docker内JDK版本,需要 先进入jdk8容器,再java -version,
6 docker 安装nginx
6.1 拉取nginx 镜像
docker pull nginx:1.26.1
6.2 创建映射文件
# 创建挂载目录
mkdir -p /mydata/nginx/conf
mkdir -p /mydata/nginx/log
mkdir -p /mydata/nginx/html
6.3 先启动ng,将容器中配置文件复制到创建的映射文件夹中
# 生成容器
docker run --name nginx -p 9999:80 -d nginx:1.26.1
# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /home/nginx/
6.4 删除原先容器
#查看容器id
docker ps -a
#停止ng
docker stop nginx
#删除容器
docker rm 容器id
6.4启动 nginx
docker run \
-p 9999:80 \
--name nginx \
-v /mydata/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /mydata/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /mydata/nginx/log:/var/log/nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-d nginx:1.26.1
6.5 设置自启
docker update --restart=always nginx
6.6验证
curl 127.0.0.1:9999
改一下 html 文字,验证一下映射
vim /mydata/nginx/html/index.html
6.7 本机访问(浏览器输入地址)
6.7.1 防火墙放开端口9999
#放行9999
firewall-cmd --zone=public --add-port=9999/tcp --permanent
#重启防火墙
firewall-cmd --reload
6.7.1 解决欢迎页面中文乱码 (可忽略)
vim /mydata/nginx/html/index.html
head 标签中间 加上
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
最后访问
7.docker 安装MinIo
7.1 拉取镜像
docker pull minio/minio
7.2 创建映射文件
//创建Minio外部挂载的配置文件
mkdir -p /mydata/minio/config
//存储上传文件的目录
mkdir -p /mydata/minio/data
7.3 创建实例并启动
docker run \
-p 19000:9000 \
-p 19090:9090 \
--net=host \
--name minio \
-d --restart=always \
-e "MINIO_ACCESS_KEY=minioadmin" \
-e "MINIO_SECRET_KEY=minioadmin" \
-v /mydata/minio/data:/data \
-v /mydata/minio/config:/root/.minio \minio/minio server \
/data --console-address ":19090" -address ":19000"
MINIO_ACCESS_KEY= 账号
MINIO_SECRET_KEY= 密码
7.3防火墙开放端口 19090 19000
#放行19090,19000
firewall-cmd --zone=public --add-port=19090/tcp --permanent
firewall-cmd --zone=public --add-port=19000/tcp --permanent
#重启防火墙
firewall-cmd --reload
7.4验证,浏览器输入访问 19090 客户端端口,19000 api端口
输入密码上传一张验证,成功上传
8 docker安装nacos 2.1.1
8.1 拉取镜像
docker pull nacos/nacos-server:v2.1.1
8.2 创建映射挂载目录
mkdir -p /mydata/nacos/logs/ #新建logs目录
mkdir -p /mydata/nacos/conf/ #新建conf目录
mkdir -p /mydata/nacos/data/ #新建data目录
8.3 先启动容器,将容器中配置文件复制到创建的映射文件夹中
docker run --name nacos -d -p 8848:8848 -e MODE=standalone nacos/nacos-server:v2.1.1
docker cp nacos:/home/nacos/logs/ /mydata/nacos/
docker cp nacos:/home/nacos/conf/ /mydata/nacos/
docker cp nacos:/home/nacos/data/ /mydata/nacos/
8.4 删除刚才启动的nacos容器
docker rm -f nacos
8.5mysql数据库配置
docker安装mysql,参考本文 标题 3. docker安装mysql 5.7
8.5.1 打开前面从容器复制到 conf 里的文件,通过navicat将 .sql 文件导入至数据库
数据库这边新建命名为 server_config
数据库脚本
/** Copyright 1999-2018 Alibaba Group Holding Ltd.** Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance with the License.* You may obtain a copy of the License at** http://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*//******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = config_info */
/******************************************/
CREATE TABLE `config_info` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',`data_id` varchar(255) NOT NULL COMMENT 'data_id',`group_id` varchar(255) DEFAULT NULL,`content` longtext NOT NULL COMMENT 'content',`md5` varchar(32) DEFAULT NULL COMMENT 'md5',`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',`src_user` text COMMENT 'source user',`src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',`app_name` varchar(128) DEFAULT NULL,`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',`c_desc` varchar(256) DEFAULT NULL,`c_use` varchar(64) DEFAULT NULL,`effect` varchar(64) DEFAULT NULL,`type` varchar(64) DEFAULT NULL,`c_schema` text,`encrypted_data_key` text NOT NULL COMMENT '秘钥',PRIMARY KEY (`id`),UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = config_info_aggr */
/******************************************/
CREATE TABLE `config_info_aggr` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',`data_id` varchar(255) NOT NULL COMMENT 'data_id',`group_id` varchar(255) NOT NULL COMMENT 'group_id',`datum_id` varchar(255) NOT NULL COMMENT 'datum_id',`content` longtext NOT NULL COMMENT '内容',`gmt_modified` datetime NOT NULL COMMENT '修改时间',`app_name` varchar(128) DEFAULT NULL,`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',PRIMARY KEY (`id`),UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租户字段';/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = config_info_beta */
/******************************************/
CREATE TABLE `config_info_beta` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',`data_id` varchar(255) NOT NULL COMMENT 'data_id',`group_id` varchar(128) NOT NULL COMMENT 'group_id',`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',`content` longtext NOT NULL COMMENT 'content',`beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps',`md5` varchar(32) DEFAULT NULL COMMENT 'md5',`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',`src_user` text COMMENT 'source user',`src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',`encrypted_data_key` text NOT NULL COMMENT '秘钥',PRIMARY KEY (`id`),UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta';/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = config_info_tag */
/******************************************/
CREATE TABLE `config_info_tag` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',`data_id` varchar(255) NOT NULL COMMENT 'data_id',`group_id` varchar(128) NOT NULL COMMENT 'group_id',`tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',`tag_id` varchar(128) NOT NULL COMMENT 'tag_id',`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',`content` longtext NOT NULL COMMENT 'content',`md5` varchar(32) DEFAULT NULL COMMENT 'md5',`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',`src_user` text COMMENT 'source user',`src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',PRIMARY KEY (`id`),UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag';/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = config_tags_relation */
/******************************************/
CREATE TABLE `config_tags_relation` (`id` bigint(20) NOT NULL COMMENT 'id',`tag_name` varchar(128) NOT NULL COMMENT 'tag_name',`tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type',`data_id` varchar(255) NOT NULL COMMENT 'data_id',`group_id` varchar(128) NOT NULL COMMENT 'group_id',`tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',`nid` bigint(20) NOT NULL AUTO_INCREMENT,PRIMARY KEY (`nid`),UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`),KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation';/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = group_capacity */
/******************************************/
CREATE TABLE `group_capacity` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',`group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',`quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',`usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',`max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',`max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值',`max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',`max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_group_id` (`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表';/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = his_config_info */
/******************************************/
CREATE TABLE `his_config_info` (`id` bigint(20) unsigned NOT NULL,`nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,`data_id` varchar(255) NOT NULL,`group_id` varchar(128) NOT NULL,`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',`content` longtext NOT NULL,`md5` varchar(32) DEFAULT NULL,`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,`src_user` text,`src_ip` varchar(50) DEFAULT NULL,`op_type` char(10) DEFAULT NULL,`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',`encrypted_data_key` text NOT NULL COMMENT '秘钥',PRIMARY KEY (`nid`),KEY `idx_gmt_create` (`gmt_create`),KEY `idx_gmt_modified` (`gmt_modified`),KEY `idx_did` (`data_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造';/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = tenant_capacity */
/******************************************/
CREATE TABLE `tenant_capacity` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',`tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',`quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',`usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',`max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',`max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数',`max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',`max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表';CREATE TABLE `tenant_info` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',`kp` varchar(128) NOT NULL COMMENT 'kp',`tenant_id` varchar(128) default '' COMMENT 'tenant_id',`tenant_name` varchar(128) default '' COMMENT 'tenant_name',`tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc',`create_source` varchar(32) DEFAULT NULL COMMENT 'create_source',`gmt_create` bigint(20) NOT NULL COMMENT '创建时间',`gmt_modified` bigint(20) NOT NULL COMMENT '修改时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`),KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info';CREATE TABLE `users` (`username` varchar(50) NOT NULL PRIMARY KEY,`password` varchar(500) NOT NULL,`enabled` boolean NOT NULL
);CREATE TABLE `roles` (`username` varchar(50) NOT NULL,`role` varchar(50) NOT NULL,UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE
);CREATE TABLE `permissions` (`role` varchar(50) NOT NULL,`resource` varchar(255) NOT NULL,`action` varchar(8) NOT NULL,UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE
);INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');
8.5.2 修改配置文件
进入前面映射文件夹
cd /mydata/nacos/conf
先备份原文件,防止玩崩无法复原【修改任何配置文件前都先备份一下】
cp application.properties application_bak.properties
# spring
server.servlet.contextPath=/nacos
server.contextPath=/nacos
server.port=8848
server.tomcat.accesslog.max-days=30
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i
spring.datasource.platform=mysql
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false
db.num=1
db.url.0=jdbc:mysql://公网或内网ip:3306/server_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
#db.url.1=jdbc:mysql://${MYSQL_SERVICE_HOST}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME}?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false}
db.user=root
db.password=123456
### The auth system to use, currently only 'nacos' and 'ldap' is supported:
nacos.core.auth.system.type=${NACOS_AUTH_SYSTEM_TYPE:nacos}
### worked when nacos.core.auth.system.type=nacos
### The token expiration in seconds:
nacos.core.auth.plugin.nacos.token.expire.seconds=${NACOS_AUTH_TOKEN_EXPIRE_SECONDS:18000}
### The default token:
nacos.core.auth.plugin.nacos.token.secret.key=${NACOS_AUTH_TOKEN:SecretKey012345678901234567890123456789012345678901234567890123456789}
### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.
nacos.core.auth.caching.enabled=${NACOS_AUTH_CACHE_ENABLE:false}
nacos.core.auth.enable.userAgentAuthWhite=${NACOS_AUTH_USER_AGENT_AUTH_WHITE_ENABLE:false}
nacos.core.auth.server.identity.key=nacos
nacos.core.auth.server.identity.value=nacos
server.tomcat.accesslog.enabled=${TOMCAT_ACCESSLOG_ENABLED:false}
# default current work dir
server.tomcat.basedir=file:.
## spring security config
### turn off security
nacos.security.ignore.urls=${NACOS_SECURITY_IGNORE_URLS:/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**}
# metrics for elastic search
management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false
nacos.naming.distro.taskDispatchThreadCount=10
nacos.naming.distro.taskDispatchPeriod=200
nacos.naming.distro.batchSyncKeyCount=1000
nacos.naming.distro.initDataRatio=0.9
nacos.naming.distro.syncRetryDelay=5000
nacos.naming.data.warmup=true
8.6 创建实例并启动
docker run -d --name nacos \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--env MODE=standalone \
--env NACOS_AUTH_ENABLE=true \
-v /mydata/nacos/conf/:/home/nacos/conf \
-v /mydata/nacos/logs:/home/nacos/logs \
-v /mydatar/nacos/data:/home/nacos/data \
--restart=always \nacos/nacos-server:v2.1.1
参数说明:
docker run -d --name nacos \ -d 表示运行在后台,--name 指定名称为nacos
-p 8848:8848 \ 前者为暴露给外部访问的端口,后者为nacos容器端口
-p 9848:9848 \ 9848是nacos2.0.0版本以上必须要加上端口映射
-p 9849:9849 \ 9849是nacos2.0.0版本以上必须要加上端口映射
--env MODE=standalone \ nacos以单机版启动,默认为cluster(集群)
--env NACOS_AUTH_ENABLE=true \ 如果使用官方镜像,请在启动docker容器时,添加如下环境变量
-v /mydata/nacos/conf/:/home/nacos/conf \ nacos 配置文件目录,“:”前为服务器目录,“:”后为nacos容器中的目录
-v /mydata/nacos/logs:/home/nacos/logs \ nacos 日志文件目录,“:”前为服务器目录,“:”后为nacos容器中的目录
-v /mydata/nacos/data:/home/nacos/data \ nacos 数据文件目录,“:”前为服务器目录,“:”后为nacos容器中的目录
nacos/nacos-server:v2.1.1 指定 docker nacos 版本,这里是2.1.1版本
8.7 防火墙开放 8848 9848 9849端口
firewall-cmd --zone=public --add-port=8848/tcp --permanent
firewall-cmd --zone=public --add-port=9848/tcp --permanent
firewall-cmd --zone=public --add-port=9849/tcp --permanent
#重启防火墙
firewall-cmd --reload
8.7 验证 (浏览器访问)
随便加个配置试一下
9. docker安装其他
累了,后续自己装一遍 再更新 。。
10. 微服务部署 (一个个Dockerfile)
10.1 创建映射文件夹
需部署几个创建几个
mkdir -p /mydata/server/backend/server-auth
mkdir -p /mydata/server/backend/server-file
mkdir -p /mydata/server/backend/server-gateway
10.2 在对应映射文件创建Dockerfile文件
以gateway为例,其他雷同
vi /mydata/server/backend/server-gateway/Dockerfile
输入内容 【参数解释说明看 注释】
FROM openjdk:8-jre
# author
MAINTAINER server# 挂载目录
VOLUME /mydata/server/backend/server-gateway
# 指定路径
WORKDIR /mydata/server/backend/server-gateway
# 复制jar文件到路径
COPY ./server-gateway.jar /mydata/server/backend/server-gateway/server-gateway.jar
# 启动网关服务
ENTRYPOINT ["java","-jar","server-gateway.jar"]
10.3 上传需部署jar至相应映射文件夹下,与Dockerfile同级
10.4 构建镜像
docker build -t server-gateway:1.0 .
10.5 映射目录卷并启动
docker run -d -p 8080:8080 --name gateway -v /mydata/server/backend/server-gateway:/mydata/server/backend/server-gateway server-gateway:1.0
/mydata/server/backend/server-gateway 是宿主机上 server-gateway 目录的路径。
/mydata/server/backend/server-gateway 是容器内的路径。
这样宿主机上的 server-gateway 目录会映射到容器内,你可以在宿主机上更新文件,容器内会自动同步。
10.6 重新启动(下一次替换包)
下一次替换了宿主机 /mydata/server/backend/server-gateway (10.1 创建映射文件夹) 上传的jar包后
docker restart gateway
其他服务
其他服务,重复上述操作,修改其对应的目录卷,包名即可
部署服务遇到的坑
部署过程中,发现启动gateway 报错
com.alibaba.nacos.api.exception.NacosException: Client not connected, current status:STARTING
网上搜索,都是说没有放开
8848
9848
9849
【题外话】
但是在安装 nacos的时候我已经映射,并且防火墙放开了
百思不得其解,怀疑是配置文件的问题,账号,命名,甚至一度怀疑是不是bootstrap.yml文件加了group的原因,重新打包,重新安装nacos都不是
最后!!!! 发现是内存不够了,整了个免费试用的云服务器,前面装的一些东西全启动了
剩下 73M ,关掉一些其他启动不必要的容器,就启动成功了!!
微服务部署(一次性,compose)
一样的,自己先部署一遍 。。。。