linux(centos) 环境部署,安装JDK,docker(mysql, redis,nginx,minio,nacos)

目录

      • 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
  1. 直接先关闭防火墙试试
  2. 检查是否允许3306端口通过防火墙
firewall-cmd --query-port=3306/tcp

在这里插入图片描述
no: 未开放

  1. 通过firewall-cmd开放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent

在这里插入图片描述

  1. 重启
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)

一样的,自己先部署一遍 。。。。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法日记 40 day 单调栈

最后两题了&#xff0c;直接上题目。 题目&#xff1a;接雨水 42. 接雨水 - 力扣&#xff08;LeetCode&#xff09; 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1…

yagmail邮件发送库:如何用Python实现自动化邮件营销?

&#x1f3a5; 作者简介&#xff1a; CSDN\阿里云\腾讯云\华为云开发社区优质创作者&#xff0c;专注分享大数据、Python、数据库、人工智能等领域的优质内容 &#x1f338;个人主页&#xff1a; 长风清留杨的博客 &#x1f343;形式准则&#xff1a; 无论成就大小&#xff0c;…

【RL Base】强化学习:信赖域策略优化(TRPO)算法

&#x1f4e2;本篇文章是博主强化学习&#xff08;RL&#xff09;领域学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对相关等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅…

黑马2024AI+JavaWeb开发入门Day04-SpringBootWeb入门-HTTP协议-分层解耦-IOCDI飞书作业

视频地址&#xff1a;哔哩哔哩 讲义作业飞书地址&#xff1a;day04作业&#xff08;IOC&DI&#xff09; 作业很简单&#xff0c;主要是练习拆分为三层架构controller、service、dao&#xff0c;并基于IOC & DI进行解耦。 1、结构&#xff1a; 2、代码 网盘链接&…

(长期更新)《零基础入门 ArcGIS(ArcMap) 》实验三----学校选址与路径规划(超超超详细!!!)

目录 实验三 学校选址与道路规划 3.1 实验内容及目的 3.1.1 实验内容 3.1.2 实验目的 3.2 实验方案 3.3 操作流程 3.3.1 环境设置 3.3.2 地势分析 &#xff08;1&#xff09;提取坡度: (2)重分类: 3.3.3 学校点分析 (1)欧氏距离: (2)重分类: 3.3.4 娱乐场所点分析 (1)欧氏距离…

【Python网络爬虫笔记】8- (BeautifulSoup)抓取电影天堂2024年最新电影,并保存所有电影名称和链接

目录 一. BeautifulSoup的作用二. 核心方法介绍2.1 构造函数2.2 find()方法2.3 find_all()方法2.4 select()方法 三. 网络爬虫中使用BeautifulSoup四、案例爬取结果 一. BeautifulSoup的作用 解析HTML/XML文档&#xff1a;它可以将复杂的HTML或XML文本转换为易于操作的树形结构…

MATLAB期末复习笔记(中)

目录 三、MATLAB函数和程序结构 1.MATLAB文件 2.变量和数据类型 &#xff08;1&#xff09;变量 &#xff08;2&#xff09;变量类型 &#xff08;3&#xff09;字符串 3.函数文件 &#xff08;1&#xff09;函数文件规范 &#xff08;2&#xff09;子函数和私有函数 &…

算法刷题Day8:BM30 二叉搜索树与双向链表

题目 牛客网题目传送门 思路 对二叉搜索树进行中序遍历&#xff0c;结果就是按序数组。因此想办法把前面遍历过的节点给记下来&#xff0c;记作pre。当遍历到某个节点node的时候&#xff0c;令前驱指向pre&#xff0c;然后让pre的后驱指向node。 代码 class TreeNode:def…

深入解析 Dubbo 中的常见问题及优化方案: 数据量限制与配置错误20241203

&#x1f31f; 深入解析 Dubbo 中的常见问题及优化方案&#xff1a;数据量限制与配置错误 在分布式系统中&#xff0c;Dubbo 作为高性能的 RPC 框架广泛应用于企业服务化架构。然而&#xff0c;在实际使用过程中&#xff0c;开发者往往会遇到一些复杂问题&#xff0c;比如 数据…

debian ubuntu armbian部署asp.net core 项目 开机自启动

我本地的环境是 rk3399机器&#xff0c;安装armbian系统。 1.安装.net core 组件 sudo apt-get update && \sudo apt-get install -y dotnet-sdk-8.0或者安装运行库&#xff0c;但无法生成编译项目 sudo apt-get update && \sudo apt-get install -y aspnet…

【AI系统】Ascend C 编程范式

Ascend C 编程范式 AI 的发展日新月异&#xff0c;AI 系统相关软件的更新迭代也是应接不暇&#xff0c;作为一本讲授理论的作品&#xff0c;我们将尽可能地讨论编程范式背后的原理和思考&#xff0c;而少体现代码实现&#xff0c;以期让读者理解 Ascend C 为何这样设计&#x…

hadoop环境配置-创建hadoop用户+更新apt+安装SSH+配置Java环境

一、创建hadoop用户(在vm安装的ubantu上打开控制台) 1、sudo useradd -m hadoop -s /bin/bash &#xff08;创建hadoop用户&#xff09; 2、sudo passwd hadoop (设置密码) 3、sudo adduser hadoop sudo&#xff08;将新建的hadoop用户设置为管理员&#xff09; 执行如下图 将…

嵌入式系统应用-LVGL的应用-平衡球游戏 part1

平衡球游戏 part1 1 平衡球游戏的界面设计2 界面设计2.1 背景设计2.2 球的设计2.3 移动球的坐标2.4 用鼠标移动这个球2.5 增加边框规则2.6 效果图 3 为小球增加增加动画效果3.1 增加移动效果代码3.2 具体效果图片 平衡球游戏 part2 第二部分文章在这里 1 平衡球游戏的界面设计…

从被动响应到主动帮助,ProActive Agent开启人机交互新篇章

在人工智能领域&#xff0c;我们正见证着一场革命性的变革。传统的AI助手&#xff0c;如ChatGPT&#xff0c;需要明确的指令才能执行任务。但现在&#xff0c;清华大学联合面壁智能等团队提出了一种全新的主动式Agent交互范式——ProActive Agent&#xff0c;它能够主动观察环境…

2.mysql 中一条更新语句的执行流程是怎样的呢?

前面我们系统了解了一个查询语句的执行流程&#xff0c;并介绍了执行过程中涉及的处理模块。 相信你还记得&#xff0c;一条查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块&#xff0c;最后到达存储引擎。 那么&#xff0c;一条更新语句的执行流程又…

NaviveUI框架的使用 ——安装与引入(图标安装与引入)

文章目录 概述安装直接引入引入图标样式库 概述 &#x1f349;Naive UI 是一个轻量、现代化且易于使用的 Vue 3 UI 组件库&#xff0c;它提供了一组简洁、易用且功能强大的组件&#xff0c;旨在为开发者提供更高效的开发体验&#xff0c;特别是对于构建现代化的 web 应用程序。…

web vue 滑动选择 n宫格选中 九宫格选中

页面动态布局经常性要交给客户来操作&#xff0c;他们按时他们的习惯在同一个屏幕内显示若干个子视图&#xff0c;尤其是在医学影像领域对于影像的同屏显示目视对比显的更为重要。 来看看如下的用户体验&#xff1a; 设计为最多支持5行6列页面展示后&#xff0c;右侧的布局则动…

ELK的Filebeat

目录 传送门前言一、概念1. 主要功能2. 架构3. 使用场景4. 模块5. 监控与管理 二、下载地址三、Linux下7.6.2版本安装filebeat.yml配置文件参考&#xff08;不要直接拷贝用&#xff09;多行匹配配置过滤配置最终配置&#xff08;一、多行匹配、直接读取日志文件、EFK方案&#…

C#调用c++创建的动态链接库dll文件

在C#中调用外部DLL文件是一种常见的编程实践&#xff0c;它具有以下几个重要意义&#xff1a;1.代码重用&#xff1b;2.模块化&#xff1b;3.性能优化&#xff1b;4.安全性&#xff1b;5.跨平台兼容性&#xff1b;6.方便更新和维护&#xff1b;7.利用特定技术或框架&#xff1b…

重建大师重建的模型坐标有偏差怎么解决?

第一遍自由网空三&#xff0c;跑完之后刺点&#xff0c;然后控制点平差增强参数解算&#xff0c;方法如下&#xff1a; &#xff08;1&#xff09;跑完自由网空三后&#xff0c;选择编辑控制点&#xff0c;出现刺点窗口后&#xff0c;导入控制点参数 &#xff08;2&#xff09…