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

news2025/1/14 1:32:01

目录

      • 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)

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

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

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

相关文章

CODESYS可视化秒表分批计时详细制作案例(一)

#制作一个在可视化界面可用于秒表计时的详细案例# 前言: 在电脑和手机的时钟上,都有一个秒表计时的功能。除此之外,在赛事上,也有更为专业的秒表计时器设备。举一反三,那么对于工控设备,为了衡量生产效率和节拍,引入了"Cycle Time(CT)"的概念,我们可以通…

openGauss开源数据库实战十八

文章目录 任务十八 openGauss逻辑结构:构:用户和权眼管理任务目标实施步骤一、准备工作二、用户和角色管理1.使用CREATE USER语句创建用户2.使用CREATE ROLE语句创建用户3.删除用户和角色 三、权限管理1.系统权限清理工作 任务十八 openGauss逻辑结构:构:用户和权眼管理 任务目…

Scratch游戏推荐 | 我的世界:平台冒险——像素世界的全新挑战! ⛏️

&#x1f3ae; Scratch游戏推荐 | 我的世界&#xff1a;平台冒险——像素世界的全新挑战&#xff01; ⛏️&#x1f30d; 今天给大家推荐一款精彩绝伦的Scratch平台冒险游戏——《我的世界&#xff1a;平台冒险 – 第二章》&#xff01;由atomicmagicnumber制作&#xff0c;这…

【java-数据结构篇】揭秘 Java LinkedList:链表数据结构的 Java 实现原理与核心概念

我的个人主页 我的专栏&#xff1a;Java-数据结构&#xff0c;希望能帮助到大家&#xff01;&#xff01;&#xff01;点赞❤ 收藏❤ 目录 1. Java LinkedList 基础 1.1 LinkedList 简介 1.2 LinkedList 的实现原理 1.3 LinkedList 与 ArrayList 的区别 2. 链表基础 2.1 链…

北斗道路运输车辆管理应用:违规驾驶行为监测、车辆编队管理、安全跟踪(车辆历史轨迹查询)、车辆动态位置数据的实时查看和管理

文章目录 场景概述解决方案应用案例合作构想场景概述 面向旅游大巴车、危险品运输车及重型载货运输车等车辆,利用北斗定位导航服务,结合互联网通信技术,实现车辆安全驾驶管理与调度,有效降低道路事故发生风险,提升道路运输管理水平及车辆调度能力。 解决方案 在车辆上安…

【ABAP——DAILOG_2】

文章目录 使用Tabstrip控件实现分页签效果标签页的修改使用Table Control控件实现表单输出表格控件使用向导创建Table ControlTable Control列的修改 用户通过界面输入数据&#xff0c;数据通过屏幕控件传递到ABAP/4程序中的变量&#xff0c;程序在PBO中准备数据并显示界面&…

资料文件夹转移工具5.2.3 |快速转移到D盘,释放C盘空间

这是一款支持将C盘的常用文件夹转移到其他磁盘分区的工具&#xff0c;提供仅变目录、复制资料和转移资料三种转移方式。该工具完全免费&#xff0c;单文件免安装&#xff0c;大小仅为546KB&#xff0c;非常适合需要释放C盘空间的用户。 大小&#xff1a;546KB 下载地址&#…

使用STM32CubeMX配置串口各种功能

使用STM32CubeMX配置串口各种功能 STM32CubeMX软件的安装接收空闲中断STM32CubeMX配置1.新建工程2. 选择芯片3. 选择时钟和下载方式4. 配置串口5.设置工程消息6.生成代码7.修改生成的代码 空闲中断DMA转运STM32CubeMX配置4.配置串口5.设置工程消息6.生成代码7.修改生成的代码 S…

Javascript中DOM操作和事件监听综合练习 (具备三种功能的轮播图案例)

#如何去实现图片轮播效果图&#xff0c;通过创建一个基本的 HTML 页面结构&#xff0c;包含用于展示轮播图片的区域、左右切换箭头以及放置轮播图片的容器。# 整体架构 一、CSS 样式 接下来创建一个 styles.css 文件来设置页面的样式&#xff0c;让轮播效果看起来更美观。定义…

无人设备遥控器之防水性能篇

无人设备遥控器的防水性能是评估其耐用性和适应不同环境能力的重要指标。随着无人设备技术的不断发展&#xff0c;越来越多的遥控器在设计时融入了防水元素&#xff0c;以满足用户在不同天气条件下的使用需求。 一、防水等级与标准 无人设备遥控器的防水性能通常通过防水等级来…

【JAVA】Java入门 - 循环结构进阶

第1关 for循环的进阶使用-嵌套循环&#xff08;1&#xff09; 第2关 for循环的进阶使用-嵌套循环&#xff08;2&#xff09; 第3关 99乘法表 第4关 综合练习之ATM取款机 第5关 选择题 D、BC、B

【AI系统】AI 编译器后端优化

AI 编译器后端优化 AI 编译器分为多层架构&#xff0c;最顶层由各种 AI 训练框架编写的神经网络模型架构&#xff0c;一般由 Python 编写&#xff0c;常见的 AI 训练框架有 PyTorch、MindSpore、PaddlePaddle 等。在导入 AI 编译器时需要用对应框架的 converter 功能转换为 AI…

力扣 三角dp

动态规划基础题&#xff0c;当前所在元素来自上一行的两列的值。 题目 从图可以看出&#xff0c;每一行的第一个数与最后一个数都是1&#xff0c;然后中间的数是来自它左上方和右上方的数的和。当然并不是要打印这个三角形的形状&#xff0c;因此可以想到正常的打印方式应该是…

Oracle检查加强版本

支持更丰富了&#xff0c;代码也更乱了 #!/bin/bash## 实例个数 告警日志 实例状态 会话 活动会话 锁 集群状态 服务状态 磁盘空间 侦听日志 ## 单机、RAC Linux、AIX 11g、19c、23ai ## 依赖adrci配置正常&#xff0c;也可以改为 getAlert() ## ver 1.2case uname inAIX)ps…

RoBERTa- 稳健优化的 BERT 预训练模型详解

一、引言 自 BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;问世&#xff0c;预训练语言模型在自然语言处理&#xff08;NLP&#xff09;领域掀起革命浪潮&#xff0c;凭卓越表现大幅刷新诸多任务成绩。RoBERTa 承继 BERT 架构&#x…

【流程图】各元素形状和含义

判定、文档、数据、数据库、流程处理节点 矩形 - 动词 平行四边形 - 图像 下波浪 - 数据 图片来源http://baike.cu12.com/bkss/62449.shtml

「Mac畅玩鸿蒙与硬件41」UI互动应用篇18 - 多滑块联动控制器

本篇将带你实现一个多滑块联动的控制器应用。用户可以通过拖动多个滑块&#xff0c;动态控制不同参数&#xff08;如红绿蓝三色值&#xff09;&#xff0c;并实时显示最终结果。我们将以动态颜色调节为例&#xff0c;展示如何结合状态管理和交互逻辑&#xff0c;打造一个高级的…

PyQt6 开发基础

<?xml version"1.0" encoding"UTF-8"?> <ui version"4.0"><class>Form</class><widget class"QWidget" name"Form"><property name"geometry"><rect><x>0<…

Kafka如何保证消息可靠?

大家好&#xff0c;我是锋哥。今天分享关于【Kafka如何保证消息可靠&#xff1f;】面试题。希望对大家有帮助&#xff1b; Kafka如何保证消息可靠&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Kafka通过多种机制来确保消息的可靠性&#xff0c;主要包…

pytest(二)excel数据驱动

一、excel数据驱动 excel文件内容 excel数据驱动使用方法 import openpyxl import pytestdef get_excel():excel_obj openpyxl.load_workbook("../pytest结合数据驱动-excel/data.xlsx")sheet_obj excel_obj["Sheet1"]values sheet_obj.valuescase_li…