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)

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

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

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

相关文章

电阻改善信号完整性

1.为什么电路端接电阻能改善信号完整性 由于电信号在PCB上传输&#xff0c;因此在PCB设计中可以把PCB走线认为是信号的通道&#xff0c;当该通道的 物理结构&#xff08;线宽&#xff0c;线到参考面的距离等&#xff09;发生变化&#xff0c;特别是有一些突变时&#xff0c;都会…

Java基础面试题,46道Java基础八股文(4.8万字,30+手绘图)

Java是一种广泛使用的编程语言&#xff0c;由Sun Microsystems&#xff08;现为Oracle Corporation的一部分&#xff09;在1995年首次发布。它是一种面向对象的语言&#xff0c;这意味着它支持通过类和对象的概念来构造程序。 Java设计有一个核心理念&#xff1a;“编写一次&am…

记录下nginx接口代理配置问题

其中api和api1是前面定义的upstream&#xff0c;ip相同只是端口不同。 一开始/api1/直接 像api一样 proxy_pass http://api1这样是不行的&#xff0c;因为会代理到 后端的 /api1/...接口&#xff0c;而后端实际接口地址是 /api/..... 所以必须像上面写法才能将外网的 /api…

高效流程图绘制:开发设计流程图利器

在选择画流程图的工具时&#xff0c;不同的项目和使用场景会决定最佳的工具。以下是几款常见的流程图工具&#xff0c;并结合具体项目使用场景提供建议&#xff1a; 1. Lucidchart 特点&#xff1a; 在线协作&#xff1a;支持多人实时协作&#xff0c;适合团队合作。模板丰富&…

【Python网络爬虫笔记】7-网络爬虫的搜索工具re模块

目录 一、网络爬虫中的正则表达式和re模块&#xff08;一&#xff09;数据提取的精确性&#xff08;二&#xff09;处理复杂的文本结构&#xff08;三&#xff09;提高数据处理效率 二、正则表达式的内涵&#xff08;一&#xff09;、常用元字符&#xff08;二&#xff09;、量…

Day4:生信新手笔记 — R语言简单命令与Rstudio配置

一、Rstudio的界面展示 (很像Matlab风格) 二、Rstudio设置字体大小 三、 用Rproject管理工作目录 工作目录(working directory) 即当前所在的目录&#xff0c;是脚本、图片、文件的默认保存位置&#xff0c;也是文件读取的默认位置。R语言只能和一个文件夹进行互动&#xff0…

koa中间件

文章目录 1. koa中间件简介2. 中间件类型1. 应用级中间件2. 路由级中间件3. 错误处理中间件4. 第三方中间件 3.中间件执行流程 1. koa中间件简介 在Koa中&#xff0c;中间件呈现为一个异步函数&#xff0c;该函数支持 async/await 语法&#xff0c;它接收两个参数&#xff1a;…

【开源】A060-基于Spring Boot的游戏交易系统的设计与实现

&#x1f64a;作者简介&#xff1a;在校研究生&#xff0c;拥有计算机专业的研究生开发团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看项目链接获取⬇️&#xff0c;记得注明来意哦~&#x1f339; 赠送计算机毕业设计600个选题ex…

泷羽sec:shell编程(9)不同脚本的互相调用和重定向操作

声明&#xff1a; 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&#…

Pod Pending无法调度

根据您提供的Kubernetes调度警告信息&#xff0c;以下是可能的原因分析&#xff1a; Insufficient Memory: 有1个节点因为内存不足而无法调度Pod。这可能是因为该节点上已经运行的Pod消耗了大量内存&#xff0c;没有足够的资源来运行新的Pod。 Pod Affinity/Anti-Affinity: 有…

QT 左右 上下,拉伸 分配窗口大小

要的效果是以下&#xff1a; QT C 两个QWideget A B现在有放在一个窗口QWideget Test内&#xff0c;初始比例要2&#xff1a;8 ,现在我要 A B 两个窗口中间 当鼠标移到他中间时&#xff0c;有条线&#xff0c;可以左右移动来控件 A B 窗口所占的大小widgetB &#xff08;有 wi…

pyqt6简单应用

from PyQt6.QtWidgets import QWidget,QPushButton,QLineEdit,QLabel,QApplication from PyQt6.QtGui import QPixmap,QIcon,QCursor from PyQt6.QtCore import Qt from PyQt6 import QtCoreimport sysclass Ui_window(QWidget):def __init__(self):super().__init__()# 设置窗…

【Spring篇】初始Spring MVC框架之Spring MVC入门程序编写

&#x1f9f8;安清h&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;【计算机网络】【Mybatis篇】【Spring篇】 &#x1f6a6;作者简介&#xff1a;一个有趣爱睡觉的intp&#xff0c;期待和更多人分享自己所学知识的真诚大学生。 目录 &#x1f3af;Spring MVC概述 …

祖先序列重建结合机器学习改进双键还原酶-文献精读87

Ancestral Sequence Reconstruction Meets Machine Learning: Ene Reductase Thermostabilization Yields Enzymes with Improved Reactivity Profiles 祖先序列重建结合机器学习&#xff1a;酶还原酶热稳定化产生具有改进反应性特征的酶 摘要 烯还原酶&#xff08;EREDs&…

华为的USG6000为什么不能ping通

前言&#xff1a; 防火墙usg6000v的镜像 链接: https://pan.baidu.com/s/1uLRk0-hnHRTLYLx1Pnplow?pwdtymp 提取码: tymp 看了好多毒文章&#xff0c;感觉写作业更有意思&#xff0c;可以了解新的知识 内容&#xff1a; 首先看毒文章是这样说的&#xff0c;华为的防火墙是…

untiy之碰撞体编辑器

在进行游戏开发时经常会遇到复杂构造的物体&#xff0c;那么如何类似的物体增加碰撞体呢&#xff0c;通过unity自带的collider是很麻烦的&#xff0c;这里介绍一个插件 Easy Collider editor轻松解决这个需求 1. 打开easy collider editor编辑器 2. 选择要添加碰撞体的物体&…

【Leetcode】《双指针出击:多数和问题的“破阵之匙”,解锁高效算法密码》

前言 &#x1f31f;&#x1f31f;本期讲解关于双指针解决多数和问题~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 &#x1f386;那么废话不…

【docker】Windows11创建Ubuntu-desktop并使用VNC完成远程访问

【docker】Windows11创建Ubuntu-desktop并使用VNC完成远程访问 文章目录 【docker】Windows11创建Ubuntu-desktop并使用VNC完成远程访问前言创建Ubuntu容器下载镜像运行容器连接容器 搭建容器XFCE桌面环境安装ubuntu桌面 总结 前言 docker ubuntu容器在深度学习领域的使用过程…

【Vulkan入门】01-列举物理设备

目录 先叨叨git信息主要逻辑VulkanEnvEnumeratePhysicalDevices()PrintPhysicalDevices() 编译并运行程序 先叨叨 上一篇已经创建了VkInstance&#xff0c;本篇我们问问VkInstance&#xff0c;在当前平台上有多少个支持Vulkan的物理设备。 git信息 repository: https://gite…

【嵌入式系统设计】LES3~5:Cortex-M4系统架构(上)第1节 ARM处理器,M4内核处理器,M4调试跟踪接口

关注作者了解更多 我的其他CSDN专栏 过程控制系统 工程测试技术 虚拟仪器技术 可编程控制器 工业现场总线 数字图像处理 智能控制 传感器技术 嵌入式系统 复变函数与积分变换 单片机原理 线性代数 大学物理 热工与工程流体力学 数字信号处理 光电融合集成电路…