Linux离线安装JDK、Docker、Mysql、Nginx、Redis、Nacos

MD文件以及安装包下载

  • 百度云链接,提取码为:trea
    注:文件大小为1.49GB,离线如何获取docker镜像的方法在本文“docker离线部署镜像”

Linux配置静态IP

  • 编辑配置文件:vi /etc/sysconfig/network-scripts/ifcfg-ens192
  • 将BOOTPROTO修改为static
    将ONBOOT修改为yes
    添加静态地址IPADDR=192.168.0.188
    添加子网掩码NETMASK=255.255.255.0
    添加网关GATEWAY=192.168.0.1
    添加域名系统DNS1=8.8.8.8
    添加域名系统DNS2=114.114.114.114
  • 重启网络服务:service network restart

安装JDK并配置环境变量

  • 将jdk压缩包上传到服务器

  • 解压:tar -zxvf 包名

  • 编辑配置文件:vi /etc/profile

    在文件末尾添加

    export JAVA_HOME=/home/java/jdk1.8.0_202(jdk解压路径)
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export PATH=$JAVA_HOME/bin:$PATH
    
  • 重启配置文件:source /etc/profile

  • 检测环境变量是否配置成功:java -version

安装docker服务

  • 将docker压缩包上传到服务器

  • 解压:tar -zxvf 包名

  • 将docker文件夹下面的文件拷贝到/usr/bin目录下:cp -p docker/* /usr/bin

  • 将docker注册为service

    • 创建docker.service配置文件并编辑:vi /usr/lib/systemd/system/docker.service

    • 复制以下内容

      [Unit]
      Description=Docker Application Container Engine
      Documentation=http://docs.docker.com
      After=network.target docker.socket
      [Service]
      Type=notify
      EnvironmentFile=-/run/flannel/docker
      WorkingDirectory=/usr/local/bin
      ExecStart=/usr/bin/dockerd \
                      -H tcp://0.0.0.0:4243 \
                      -H unix:///var/run/docker.sock \
                      --selinux-enabled=false \
                      --log-opt max-size=1g
      ExecReload=/bin/kill -s HUP $MAINPID
      # Having non-zero Limit*s causes performance problems due to accounting overhead
      # in the kernel. We recommend using cgroups to do container-local accounting.
      LimitNOFILE=infinity
      LimitNPROC=infinity
      LimitCORE=infinity
      # Uncomment TasksMax if your systemd version supports it.
      # Only systemd 226 and above support this version.
      #TasksMax=infinity
      TimeoutStartSec=0
      # set delegate yes so that systemd does not reset the cgroups of docker containers
      Delegate=yes
      # kill only the docker process, not all processes in the cgroup
      KillMode=process
      Restart=on-failure
      [Install]
      WantedBy=multi-user.target
      
    • 重新加载docker配置文件:systemctl daemon-reload

  • 启动docker:systemctl start docker

    注意:如果启动docker提示"Failed to execute operation: Bad message",可能复制docker.service文件时,[Unit] 变成了 t],又或者ExecStart 写成Execstart。

  • 查看docker是否启动成功:systemctl status docker

  • 设置docker开机自启:systemctl enable docker

  • 可能出现的错误

    • 启动容器时报以下错误
      docker: Error response from daemon: OCI runtime create failed: container_linux.go:449;container init caused "write /proc/self/attr/keycreate: permission denied"": unknown

    • 解决方法

      • 永久解决

        编辑config文件:vi /etc/selinux/config

        SELINUX=enforcing改为SELINUX=disabled

        重启服务器

        启动docker容器docker start container-id

      • 临时解决

        1. 输入setenforce 0
        2. 启动docker容器docker start container-id

docker离线部署镜像

  • 如何获取镜像?

    • 在已经部署了的机器上获取镜像
    • 获取镜像名:docker images
    • 打包对应的镜像:docker save <镜像名> -o <包名>.tar
      • 例如:docker save mysql -o mysql_5.7.tar
  • 加载镜像

    • 将已打包好的镜像拷贝到服务器上
    • docker load -i <包名>.tar
      • 例如:docker load -i mysql_5.7.tar
  • docker常用命令

    docker search 镜像名称 //搜索镜像
    docker pull 镜像名称:版本号 //拉取对应版本的镜像
    docker pull 镜像名称 //默认拉取最新的镜像
    docker images //查看本地已下载的镜像
    docker ps //查看正在运行的容器
    docker ps -a //查看所有的容器(包括run、stop、exited状态的)
    docker container ls //查看正在运行的容器
    docker rm 容器ID //只能删除没有在运行的容器
    docker rm -f 容器ID //可以删除正在运行的容器
    docker run -p 本地主机端口号:容器服务端口号 --name 容器名字 [-e 配置信息修改] -d 镜像名字
    docker start 容器ID //启动容器
    docker stop 容器ID //终止容器
    docker rmi 镜像名称orID //删除镜像
    

docker安装MySQL

  • 创建MySQL测试容器

    docker run --restart=always --name mysql_test -p 3306:3306 -e MYSQL_ROOT_PASSWORD='root' -d mysql:8.0.30
    
  • 创建挂载目录

    mkdir -p /home/docker/mysql/conf /home/docker/mysql/data
    
  • 查找docker内MySQL配置文件

    # 进入容器内
    docker exec -it mysql_test bash
    # 查找my.cnf文件位置
    mysql --help | grep my.cnf 
    # 显示如下,路径按优先排序,会是在以下路径里: 
                          order of preference, my.cnf, $MYSQL_TCP_PORT,
    /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
    # 配置文件的路径不一定都一样,退出容器!
    
  • 拷贝my.cnf文件到本地

    #查看本地容器ID
    docker ps -a
    #格式
    #docker cp CONTAINER ID:容器目录 本地目录
    #示例
    docker cp 容器ID:/etc/my.cnf /home/docker/mysql/conf
    
  • 查找数据文件位置

    # 运行docker inspect命令的JSON输出具有一个 Mount密钥,其值提供了有关数据目录卷的信息
    docker inspect mysql_test | grep Mounts -A 10
    # 输出显示源文件夹:/var/lib/docker/volumes,表示已安装在 /var/lib/mysql容器内的服务器数据目录中
            "Mounts": [
                {
                    "Type": "volume",
                    "Name": "78be1419137ffebe99beb9fdbaa522f1fab040025e6aeced83272c1312356dd2",
                    "Source": "/var/lib/docker/volumes/78be1419137ffebe99beb9fdbaa522f1fab040025e6aeced83272c1312356dd2/_data",
                    "Destination": "/var/lib/mysql",
                    "Driver": "local",
                    "Mode": "",
                    "RW": true,
                    "Propagation": ""
                }
    
  • 删除测试容器

    docker rm -f 容器ID
    
  • 创建MySQL容器并挂载文件

    docker run --restart=on-failure:3 --name mysql -p 3306:3306 -v /home/docker/mysql/conf/my.cnf:/etc/my.cnf -v /home/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD='root' -d mysql:8.0.30
    # --restart=on-failure:3:是指容器在未来出现异常退出(退出码非0)的情况下循环重启3次
    # --name:为容器指定一个名字
    # -p:指定端口映射,格式为:主机(宿主)端口:容器端口
    # -v:绑定挂载
    # -e:设置环境变量
    # -d:后台运行容器,并返回容器 id
    

docker安装nginx

  • 创建nginx测试容器

    docker run --name nginx_test -p 80:80 -d nginx:1.22.0
    
  • 创建挂载目录

    mkdir -p /home/docker/nginx
    
  • 进入容器查看相关文件

    # 进入nginx容器
    docker exec -it nginx_test bash
    # 查看配置文件
    # nginx.conf文件 在 /etc/nginx 目录下
    cd /etc/nginx
    # -rw-r--r--. 1 root root  648 May 24 15:24 nginx.conf
    # default.conf 在 /etc/nginx/conf.d 目录下
    cd /etc/nginx/conf.d
    # -rw-r--r-- 1 root root 1093 Oct 24 07:19 default.conf
    # 查看html文件
    cd /usr/share/nginx/html
    # -rw-r--r--. 1 root root 497 May 23 23:59 50x.html
    # -rw-r--r--. 1 root root 615 May 23 23:59 index.html
    # 查看日志文件
    cd /var/log/nginx
    # lrwxrwxrwx. 1 root root 11 Aug  2 05:18 access.log -> /dev/stdout
    # lrwxrwxrwx. 1 root root 11 Aug  2 05:18 error.log -> /dev/stderr
    
  • 拷贝文件到本地

    docker cp 容器ID:/etc/nginx/nginx.conf /home/docker/nginx 
    docker cp 容器ID:/etc/nginx/conf.d /home/docker/nginx
    docker cp 容器ID:/usr/share/nginx/html /home/docker/nginx
    docker cp 容器ID:/var/log/nginx /home/docker/nginx/logs
    
  • 停止并删除测试容器

    docker rm -f 容器ID
    
  • 创建nginx容器并挂载文件

    docker run --restart=on-failure:3 --name nginx -p 80:80 -v /home/docker/nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/docker/nginx/conf.d:/etc/nginx/conf.d -v /home/docker/nginx/html:/usr/share/nginx/html -v /home/docker/nginx/logs:/var/log/nginx -e TZ=Asia/Shanghai -d nginx:1.22.0
    # --restart=on-failure:3:是指容器在未来出现异常退出(退出码非0)的情况下循环重启3次
    # --name:为容器指定一个名字
    # -p:指定端口映射,格式为:主机(宿主)端口:容器端口
    # -v:绑定挂载
    # -e:设置环境变量,时区设置为上海
    # -d:后台运行容器,并返回容器 id
    

docker安装redis

  • 创建挂载目录并添加配置文件

    • 创建目录

      mkdir -p /home/docker/redis/data /home/docker/redis/conf
      
    • 在conf下创建redis.conf配置文件

      vi /home/docker/redis/conf/redis.conf
      
    • 添加以下内容

    # bind 192.168.1.100 10.0.0.1
    
    # bind 127.0.0.1 ::1
    
    #bind 127.0.0.1 #允许远程连接
    
    protected-mode no
    # 端口
    port 6379
    
    tcp-backlog 511
    # 密码
    requirepass root
    
    timeout 0
    
    tcp-keepalive 300
    
    daemonize no
    
    supervised no
    
    pidfile /var/run/redis_6379.pid
    
    loglevel notice
    
    logfile ""
    
    databases 30
    
    always-show-logo yes
    
    save 900 1
    save 300 10
    save 60 10000
    
    stop-writes-on-bgsave-error yes
    
    rdbcompression yes
    
    rdbchecksum yes
    
    dbfilename dump.rdb
    
    dir ./
    
    replica-serve-stale-data yes
    
    replica-read-only yes
    
    repl-diskless-sync no
    
    repl-disable-tcp-nodelay no
    
    replica-priority 100
    
    lazyfree-lazy-eviction no
    lazyfree-lazy-expire no
    lazyfree-lazy-server-del no
    replica-lazy-flush no
    
    # 持久化
    appendonly yes
    
    appendfilename "appendonly.aof"
    
    no-appendfsync-on-rewrite no
    
    auto-aof-rewrite-percentage 100
    auto-aof-rewrite-min-size 64mb
    
    aof-load-truncated yes
    
    aof-use-rdb-preamble yes
    
    lua-time-limit 5000
    
    slowlog-max-len 128
    
    notify-keyspace-events ""
    
    hash-max-ziplist-entries 512
    hash-max-ziplist-value 64
    
    list-max-ziplist-size -2
    
    list-compress-depth 0
    
    set-max-intset-entries 512
    
    zset-max-ziplist-entries 128
    zset-max-ziplist-value 64
    
    hll-sparse-max-bytes 3000
    
    stream-node-max-bytes 4096
    stream-node-max-entries 100
    
    activerehashing yes
    
    hz 10
    
    dynamic-hz yes
    
    aof-rewrite-incremental-fsync yes
    
    rdb-save-incremental-fsync yes
    
  • 创建redis容器并挂载文件

    docker run --restart=on-failure:3 --name redis -p 6379:6379 -v /home/docker/redis/conf/redis.conf:/etc/redis/redis.conf -v /home/docker/redis/data:/data -d redis:7.0.4 redis-server /etc/redis/redis.conf
    # --restart=on-failure:3:是指容器在未来出现异常退出(退出码非0)的情况下循环重启3次
    # --name:为容器指定一个名字
    # -p:指定端口映射,格式为:主机(宿主)端口:容器端口
    # -v:绑定挂载
    # -d:后台运行容器,并返回容器 id
    # redis-server:/etc/redis/redis.conf 以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录 /etc/redis/redis.conf 也就是liunx下的/home/docker/redis/conf/redis.conf
    

docker安装nacos

  • 创建nacos数据库

    将nacos持久化到mysql数据库中

    新建nacos数据库,数据库名为nacos_config

    https://github.com/alibaba/nacos/blob/develop/distribution/conf/nacos-mysql.sql下载建表语句。也可以将下列语句粘贴执行

    /*
     * 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(64) 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');
    
  • 创建挂载目录

    mkdir -p /home/docker/nacos/conf /home/docker/nacos/data /home/docker/nacos/logs
    
  • 创建nacos测试容器

    docker run -d \
    -e MODE=standalone \
    -e PREFER_HOST_MODE=hostname \
    -e SPRING_DATASOURCE_PLATFORM=mysql \
    -e MYSQL_SERVICE_HOST=192.168.0.185 \
    -e MYSQL_SERVICE_PORT=3306 \
    -e MYSQL_SERVICE_USER=root \
    -e MYSQL_SERVICE_PASSWORD=root \
    -e MYSQL_SERVICE_DB_NAME=nacos_config \
    -p 8848:8848 \
    --name nacos_test \
    --restart=on-failure:3 \
    nacos/nacos-server:v2.1.0
    # MODE=standalone 单节点模式
    # SPRING_DATASOURCE_PLATFORM=mysql 使用mysql数据库连接方式
    # MYSQL_SERVICE_HOST=192.168.0.185 指定数据库地址
    # MYSQL_SERVICE_PORT 数据库端口
    # MYSQL_SERVICE_USER 数据库用户名
    # MYSQL_SERVICE_PASSWORD 数据库密码
    # MYSQL_SERVICE_DB_NAME 数据库名称
    # -p 8848:8848 端口映射
    # --name nacos_test 容器命名
    # --restart=on-failure:3 是指容器在未来出现异常退出(退出码非0)的情况下循环重启3次
    
  • 拷贝配置文件

    docker cp nacos_test:/home/nacos/conf/application.properties /home/docker/nacos/conf/
    docker cp nacos_test:/home/nacos/conf/nacos-logback.xml /home/docker/nacos/conf/
    
  • 修改application.properties的配置

    # spring
    server.servlet.contextPath=${SERVER_SERVLET_CONTEXTPATH:/nacos}
    server.contextPath=/nacos
    server.port=${NACOS_APPLICATION_PORT:8848}
    
    # 修改此行,将SPRING_DATASOURCE_PLATFORM的默认值""改为mysql
    spring.datasource.platform=${SPRING_DATASOURCE_PLATFORM:mysql}
    nacos.cmdb.dumpTaskInterval=3600
    nacos.cmdb.eventTaskInterval=10
    nacos.cmdb.labelTaskInterval=300
    nacos.cmdb.loadDataAtStart=false
    db.num=${MYSQL_DATABASE_NUM:1}
    
    # 修改此行,添加MYSQL_SERVICE_HOST的默认值为192.168.0.185,MYSQL_SERVICE_DB_NAME的默认值为nacos
    db.url.0=jdbc:mysql://${MYSQL_SERVICE_HOST:192.168.0.185}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME:nacos_config}?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8}
    
    # 修改此行,添加MYSQL_SERVICE_HOST的默认值为192.168.0.185,MYSQL_SERVICE_DB_NAME的默认值为nacos
    db.url.1=jdbc:mysql://${MYSQL_SERVICE_HOST:192.168.0.185}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME:nacos_config}?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8}
    
    # 修改此行,添加MYSQL_SERVICE_USER的默认值为root
    db.user=${MYSQL_SERVICE_USER:root}
    
    # 修改此行,添加MYSQL_SERVICE_PASSWORD的默认值为root
    db.password=${MYSQL_SERVICE_PASSWORD:root}
    ### The auth system to use, currently only 'nacos' is supported:
    nacos.core.auth.system.type=${NACOS_AUTH_SYSTEM_TYPE:nacos}
    
    
    ### The token expiration in seconds:
    nacos.core.auth.default.token.expire.seconds=${NACOS_AUTH_TOKEN_EXPIRE_SECONDS:18000}
    
    ### The default token:
    nacos.core.auth.default.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_AUTH_IDENTITY_KEY:serverIdentity}
    nacos.core.auth.server.identity.value=${NACOS_AUTH_IDENTITY_VALUE:security}
    server.tomcat.accesslog.enabled=${TOMCAT_ACCESSLOG_ENABLED:false}
    server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D
    # default current work dir
    server.tomcat.basedir=
    ## 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/**}
    
  • 删除nacos测试容器

    docker rm -f nacos_test
    
  • 重新nacos启动容器

    docker run -d \
    -e MODE=standalone \
    -p 8848:8848 \
    -v /home/docker/nacos/conf:/home/nacos/conf \
    -v /home/docker/nacos/logs:/home/nacos/logs \
    -v /home/docker/nacos/data:/home/nacos/data \
    --name nacos \
    --restart=on-failure:3 \
    nacos/nacos-server:v2.1.0
    
posted @   执迷1202  阅读(517)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示