Spring Cloud部署篇2——Docker Compose部署至CentOS云服务器

news2024/11/14 6:00:57

一、项目介绍

系统模块

com.mingink
|--mingink-api            // 接口模块
|           └──mingink-api-system               // 系统接口
|--mingink-common         // 通用模块
|           └──mingink-common-core              // 系统接口
|--mingink-gateway        // 网关模块【8081】
|--mingink-modules        // 业务模块
|           └──mingink-modules-system                   // 系统服务模块【8082】
|           └──mingink-modules-article                  // 文章服务模块【8083】
|--pom.xml                                      // 公共依赖

技术选型

开发框架:Spring Boot 3.2.2、Spring Cloud 2023.0.0、Spring Cloud Alibaba 2022.0.0.0
网关:Gateway
配置中心:Nacos 2.3.3
缓存:Redis 6.2.14
数据库:MySQL 8.0.11

目的

本次部署的是基于Spring Cloud的微服务项目,需要将现有的gateway网关模块、mingink-system系统服务模块、mingink-article文章服务模块分别打成Jar,上传到CentOS云服务器,再使用docker compose进行快速部署。

部署流程

  1. Docker 和 Docker Compose安装
  2. 环境部署
  3. 文件同步
  4. 打包
  5. 服务部署
  6. 测试访问

二、Docker 和 Docker Compose安装

Docker

参考:Centos安装docker
(1)安装 yum 工具

yum install yum-utils -y

(2)配置 yum 源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

(3)安装 docker

yum install -y docker-ce-19.03.9 docker-ce-cli-19.03.9 containerd.io

(4)启动 docker 并且设置开机启动

systemctl start docker
systemctl enable docker

(5)测试 docker

docker -v

在这里插入图片描述

Docker Compose

(1)安装 docker-compose-plugin

yum install docker-compose-plugin

(2)重启docker

systemctl restart docker

(3)测试 docker compose

docker compose version

在这里插入图片描述

三、环境部署

在部署项目服务之前,需要使用 docker compose 将项目所依赖的服务都配置好(这样将项目迁移到另一台服务器也十分方便)。在 Spring Cloud 项目中,以最常用到的 Mysql 8.0.11、Redis 6.2.14 和 Nacos 2.2.3 为例来准备相应 Docker Compose 文件。

3.1 MySQL

首先我们需要准备好需要的库表结构(包括项目业务数据库 mingink 和 Nacos 配置数据库 nacos_config),放在微服务项目根目录 mysql-init 文件夹中:在这里插入图片描述
项目数据库建表语句就根据项目需求自行完成,这里给出 nacos_config 的建表语句(也可以在官网找):

-- 创建库
create database if not exists nacos_config;

-- 切换库
use nacos_config;

-- 创建表
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for config_info
-- ----------------------------
create table if not exists config_info (
                                `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
                                `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id',
                                `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
                                `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'content',
                                `md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL 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 CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT 'source user',
                                `src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'source ip',
                                `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
                                `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '租户字段',
                                `c_desc` varchar(256) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
                                `c_use` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
                                `effect` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
                                `type` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
                                `c_schema` text CHARACTER SET utf8 COLLATE utf8_bin NULL,
                                `encrypted_data_key` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '秘钥',
                                PRIMARY KEY (`id`) USING BTREE,
                                UNIQUE INDEX `uk_configinfo_datagrouptenant`(`data_id` ASC, `group_id` ASC, `tenant_id` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 47 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = 'config_info' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for config_info_aggr
-- ----------------------------
create table if not exists config_info_aggr  (
                                     `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
                                     `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id',
                                     `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'group_id',
                                     `datum_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'datum_id',
                                     `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '内容',
                                     `gmt_modified` datetime NOT NULL COMMENT '修改时间',
                                     `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
                                     `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '租户字段',
                                     PRIMARY KEY (`id`) USING BTREE,
                                     UNIQUE INDEX `uk_configinfoaggr_datagrouptenantdatum`(`data_id` ASC, `group_id` ASC, `tenant_id` ASC, `datum_id` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '增加租户字段' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for config_info_beta
-- ----------------------------
create table if not exists config_info_beta  (
                                     `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
                                     `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id',
                                     `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'group_id',
                                     `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'app_name',
                                     `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'content',
                                     `beta_ips` varchar(1024) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'betaIps',
                                     `md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL 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 CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT 'source user',
                                     `src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'source ip',
                                     `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '租户字段',
                                     `encrypted_data_key` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '秘钥',
                                     PRIMARY KEY (`id`) USING BTREE,
                                     UNIQUE INDEX `uk_configinfobeta_datagrouptenant`(`data_id` ASC, `group_id` ASC, `tenant_id` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = 'config_info_beta' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for config_info_tag
-- ----------------------------
create table if not exists config_info_tag  (
                                    `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
                                    `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id',
                                    `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'group_id',
                                    `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT 'tenant_id',
                                    `tag_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'tag_id',
                                    `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'app_name',
                                    `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'content',
                                    `md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL 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 CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT 'source user',
                                    `src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'source ip',
                                    PRIMARY KEY (`id`) USING BTREE,
                                    UNIQUE INDEX `uk_configinfotag_datagrouptenanttag`(`data_id` ASC, `group_id` ASC, `tenant_id` ASC, `tag_id` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = 'config_info_tag' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for config_tags_relation
-- ----------------------------
create table if not exists config_tags_relation  (
                                         `id` bigint(20) NOT NULL COMMENT 'id',
                                         `tag_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'tag_name',
                                         `tag_type` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'tag_type',
                                         `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id',
                                         `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'group_id',
                                         `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT 'tenant_id',
                                         `nid` bigint(20) NOT NULL AUTO_INCREMENT,
                                         PRIMARY KEY (`nid`) USING BTREE,
                                         UNIQUE INDEX `uk_configtagrelation_configidtag`(`id` ASC, `tag_name` ASC, `tag_type` ASC) USING BTREE,
                                         INDEX `idx_tenant_id`(`tenant_id` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = 'config_tag_relation' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for group_capacity
-- ----------------------------
create table if not exists group_capacity  (
                                   `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
                                   `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin 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`) USING BTREE,
                                   UNIQUE INDEX `uk_group_id`(`group_id` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '集群、各Group容量信息表' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for his_config_info
-- ----------------------------
create table if not exists his_config_info  (
                                    `id` bigint(20) UNSIGNED NOT NULL,
                                    `nid` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
                                    `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
                                    `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
                                    `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'app_name',
                                    `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
                                    `md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
                                    `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
                                    `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
                                    `src_user` text CHARACTER SET utf8 COLLATE utf8_bin NULL,
                                    `src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
                                    `op_type` char(10) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
                                    `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '租户字段',
                                    `encrypted_data_key` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '秘钥',
                                    PRIMARY KEY (`nid`) USING BTREE,
                                    INDEX `idx_gmt_create`(`gmt_create` ASC) USING BTREE,
                                    INDEX `idx_gmt_modified`(`gmt_modified` ASC) USING BTREE,
                                    INDEX `idx_did`(`data_id` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 61 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '多租户改造' ROW_FORMAT = Dynamic;


-- ----------------------------
-- Table structure for permissions
-- ----------------------------
create table if not exists permissions  (
                                `role` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
                                `resource` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
                                `action` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
                                UNIQUE INDEX `uk_role_permission`(`role` ASC, `resource` ASC, `action` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for roles
-- ----------------------------
create table if not exists roles  (
                          `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
                          `role` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
                          UNIQUE INDEX `idx_user_role`(`username` ASC, `role` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for tenant_capacity
-- ----------------------------
create table if not exists tenant_capacity  (
                                    `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
                                    `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin 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`) USING BTREE,
                                    UNIQUE INDEX `uk_tenant_id`(`tenant_id` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '租户容量信息表' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for tenant_info
-- ----------------------------
create table if not exists tenant_info  (
                                `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
                                `kp` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'kp',
                                `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT 'tenant_id',
                                `tenant_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT 'tenant_name',
                                `tenant_desc` varchar(256) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'tenant_desc',
                                `create_source` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'create_source',
                                `gmt_create` bigint(20) NOT NULL COMMENT '创建时间',
                                `gmt_modified` bigint(20) NOT NULL COMMENT '修改时间',
                                PRIMARY KEY (`id`) USING BTREE,
                                UNIQUE INDEX `uk_tenant_info_kptenantid`(`kp` ASC, `tenant_id` ASC) USING BTREE,
                                INDEX `idx_tenant_id`(`tenant_id` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = 'tenant_info' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for users
-- ----------------------------
create table if not exists users  (
                          `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
                          `password` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
                          `enabled` tinyint(1) NOT NULL,
                          PRIMARY KEY (`username`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

然后在服务器找个位置创建 mysql 的数据存储目录/usr/soft/docker/mingink/mysql/data和配置目录/usr/soft/docker/mingink/mysql/conf ,之后就可以开始攥写 docker-compose.env.yml 文件了,示例代码如下:

version: '3'
services:
  mysql:
    image: mysql # 使用的镜像
    container_name: mysql # 启动的示例名称
    restart: always # 崩溃后自动重启
    ports:
      - "3306:3306" # 端口映射
    environment:
      TZ: Asia/Shanghai # 控制时区
      MYSQL_ROOT_PASSWORD: root123456  # mysql root用户密码
    volumes:
      - /usr/soft/docker/mingink/mysql/data:/var/lib/mysql # 将数据目录挂载到本地目录以进行持久化
      - /usr/soft/docker/mingink/mysql/conf:/etc/mysql/conf.d # 挂载配置文件目录
      - ./env/mysql/mysql-init:/docker-entrypoint-initdb.d # 启动脚本(创建容器后会自动执行建表语句)
    networks:
      - mynetwork # 指定网络

# 网络,不定义的话就是默认网络
networks:
  mynetwork: # 自定义网络,实现网络互通和隔离

3.2 Redis

Redis 服务和Mysql的类型,先创建配置文件 redis.conf ,再创建数据目录 /usr/soft/docker/mingink/redis/data 和日志目录 /usr/soft/docker/mingink/redis/logs ,示例代码如下:
在这里插入图片描述
redis.conf

# 绑定的 IP 地址,如果设置为 127.0.0.1,则只能本地访问;若设置为 0.0.0.0,则监听所有接口(默认:127.0.0.1)
bind 0.0.0.0

protected-mode yes

# Redis 服务器的端口号(默认:6379)
port 6379

tcp-backlog 511

# 设置密码,客户端连接时需要提供密码才能进行操作,如果不设置密码,可以注释掉此行(默认:无)
# requirepass redis123

# 设置在客户端闲置一段时间后关闭连接,单位为秒(默认:0,表示禁用)
# timeout 0

# 是否以守护进程(daemon)模式运行,默认为 "no",设置为 "yes" 后 Redis 会在后台运行
daemonize yes

# 设置日志级别(默认:notice)。可以是 debug、verbose、notice、warning
loglevel notice

# 设置日志文件的路径(默认:空字符串),如果不设置,日志会输出到标准输出
logfile ""

# 设置数据库数量(默认:16),Redis 使用数据库索引从 0 到 15
databases 16

# 是否启用 AOF 持久化,默认为 "no"。如果设置为 "yes",将在每个写操作执行时将其追加到文件中
appendonly yes

# 设置 AOF 持久化的文件路径(默认:appendonly.aof)
appendfilename "appendonly.aof"

# AOF 持久化模式,默认为 "always"。可以是 always、everysec 或 no
# always:每个写操作都立即同步到磁盘
# everysec:每秒钟同步一次到磁盘
# no:完全依赖操作系统的行为,可能会丢失数据,但性能最高
appendfsync always

# 设置是否在后台进行 AOF 文件重写,默认为 "no"
# auto-aof-rewrite-on-rewrite no

# 设置 AOF 文件重写触发时,原 AOF 文件大小与新 AOF 文件大小之间的比率(默认:100)
# auto-aof-rewrite-percentage 100

# 设置是否开启 RDB 持久化,默认为 "yes"。如果设置为 "no",禁用 RDB 持久化功能
save 900 1
save 300 10
save 60 10000

docker-compose.env.yml

  redis:
    image: redis:6.2.14
    container_name: redis
    restart: always
    ports:
      - "6379:6379"
    environment:
      TZ: Asia/Shanghai
    volumes:
      - /usr/soft/docker/mingink/redis/data:/data # 数据目录
      - ./env/redis/redis.conf:/usr/local/etc/redis/redis.conf # 配置文件
      - /usr/soft/docker/mingink/redis/logs:/logs # 日志, 未成功?
    networks:
      - mynetwork

3.3 Nacos

在上面的 mysql 中创建好 nacos_config 数据库后,需要在创建日志目录 /usr/soft/docker/mingink/nacos/logs。然后创建一个 nacos.env 环境配置文件:
在这里插入图片描述

MODE=standalone # 单节点启动
SPRING_DATASOURCE_PLATFORM=mysql # 单击模式下支持MYSQL数据库
MYSQL_SERVICE_HOST=mysql
MYSQL_SERVICE_PORT=3306
MYSQL_SERVICE_DB_NAME=nacos_config
MYSQL_SERVICE_USER=root
MYSQL_SERVICE_PASSWORD=root123456
MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=10000&socketTimeout=3000&autoReconnect=true&useSSL=false&serverTimezone=UTC
NACOS_AUTH_IDENTITY_KEY=mingink-key
NACOS_AUTH_IDENTITY_VALUE=mingink-value
NACOS_AUTH_TOKEN_SECRET_KEY=SecretKey012345678901234567890123456789012345678901234567890123456789
NACOS_AUTH_ENABLE=true # 打开授权系统
# NACOS_AUTH_TOKEN生成:参考https://juejin.cn/post/7213677398720757821
NACOS_AUTH_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkYXRhIjpbeyJtaW5naW5rIjoibG92ZWx1bWluZSJ9XSwiaWF0IjoxNzEwMDcxNzY4LCJleHAiOjIyMTQ5MjE1OTksImF1ZCI6IiIsImlzcyI6IiIsInN1YiI6IiJ9.eKkg8cr-kVBIMUajTzFZ0pyRxws3dvSBYsXjuYTp-yg
TZ=Asia/Shanghai # 控制时区

docker-compose.env.yml

  nacos:
    image: nacos/nacos-server:v2.2.3
    container_name: nacos
    restart: always
    ports:
      - "8848:8848"
      - "9848:9848" # gRPC
    environment:
      TZ: Asia/Shanghai
    env_file:
      - env/nacos/nacos.env # nacos配置
    volumes:
      - /usr/soft/docker/mingink/nacos/logs:/home/nacos/logs # 日志
    networks:
      - mynetwork

总的 docker-compose.env.yml 如下:
在这里插入图片描述

version: '3'
services:
  mysql:
    image: mysql # 使用的镜像
    container_name: mysql # 启动的示例名称
    restart: always # 崩溃后自动重启
    ports:
      - "3306:3306" # 端口映射
    environment:
      TZ: Asia/Shanghai # 控制时区
      MYSQL_ROOT_PASSWORD: root123456  # mysql root用户密码
    volumes:
      - /usr/soft/docker/mingink/mysql/data:/var/lib/mysql # 将数据目录挂载到本地目录以进行持久化
      - /usr/soft/docker/mingink/mysql/conf:/etc/mysql/conf.d # 挂载配置文件目录
      - ./env/mysql/mysql-init:/docker-entrypoint-initdb.d # 启动脚本(创建容器后会自动执行建表语句)
    networks:
      - mynetwork # 指定网络
  
  redis:
    image: redis:6.2.14
    container_name: redis
    restart: always
    ports:
      - "6379:6379"
    environment:
      TZ: Asia/Shanghai
    volumes:
      - /usr/soft/docker/mingink/redis/data:/data # 数据目录
      - ./env/redis/redis.conf:/usr/local/etc/redis/redis.conf # 配置文件
      - /usr/soft/docker/mingink/redis/logs:/logs # 日志, 未成功?
    networks:
      - mynetwork

  nacos:
    image: nacos/nacos-server:v2.2.3
    container_name: nacos
    restart: always
    ports:
      - "8848:8848"
      - "9848:9848" # gRPC
    environment:
      TZ: Asia/Shanghai
    env_file:
      - env/nacos/nacos.env # nacos配置
    volumes:
      - /usr/soft/docker/mingink/nacos/logs:/home/nacos/logs # 日志
    networks:
      - mynetwork


# 网络,不定义的话就是默认网络
networks:
  mynetwork: # 自定义网络,实现网络互通和隔离

四、服务部署

4.1 文件同步

下面,需要把微服务项目源码上传到服务器上(也可以使用FTP 等工具手动上传每次新打好的JAR包和docker-compose文件,但每次修改都需要重新上传,非常麻烦)。我们使用 IDEA 自带的远程部署功能,实现配置文件的自动上传,步骤如下:
1)在 工具 中选择 部署配置 选项:
在这里插入图片描述
2)添加远程部署
在这里插入图片描述
3)指定连接的服务器配置:
在这里插入图片描述
4)配置本地文件和服务器文件路径映射:
在这里插入图片描述
5)开启自动上传:
在这里插入图片描述
这样你每次在项目中修改的文件(比如 docker-compose.env.yml)都会自动同步到远程服务器,不需要再手动通过 FTP 上传。
6) 首次需要手动上传文件。
在这里插入图片描述
上传完成后,就可以在刚才文件映射的目录( /usr/soft/mingink ) 下找到已上传的文件列表。
在这里插入图片描述

4.2 获取 jar 包

打包配置

打包的pom配置和方法可以参考上一篇文章Spring Cloud部署篇1——Jar包部署至CentOS云服务器。
在项目根目录下执行打包命令:

mvn clean package

然后把各模块(我这里有三个模块)的 jar 包上传到服务器(每次重新打包都需要):
在这里插入图片描述

4.3 编写业务服务配置

与环境部署一样,我们可以编写业务服务的 Docker Compose 文件 docker-compose.env.yml,示例代码如下:

version: '3'
services:
  mingink-gateway:
    container_name: mingink-gateway
    build: # 服务的 Docker 构建文件位置
      context: ./mingink-gateway
      dockerfile: Dockerfile
    ports:
      - "8081:8081"
    networks:
      - mynetwork
    volumes:
      - ./logs/mingink-gateway:/app/log

  mingink-modules-system:
    container_name: mingink-modules-system
    build:
      context: ./mingink-modules/mingink-modules-system
      dockerfile: Dockerfile
    ports:
      - "8082:8082"
    networks:
      - mynetwork
    depends_on: # 本服务依赖的服务,控制启动先后顺序
      - mingink-gateway
    volumes:
      - ./logs/mingink-modules-system:/app/log

  mingink-modules-article:
    container_name: mingink-modules-article
    build:
      context: ./mingink-modules/mingink-modules-article
      dockerfile: Dockerfile
    ports:
      - "8083:8083"
    networks:
      - mynetwork
    depends_on: # 本服务依赖的服务,控制启动先后顺序
      - mingink-gateway
    volumes:
      - ./logs/mingink-modules-article:/app/log

# 网络,不定义的话就是默认网络
networks:
  mynetwork:

然后在各模块下编写相应的 Dockerfile 文件,以 mingink-gateway 为例:

在这里插入图片描述

# 基础镜像
FROM openjdk:17-jdk-alpine

# 指定工作目录
WORKDIR /app

# 将 jar 包添加到工作目录
ADD target/mingink-gateway.jar .

# 创建日志目录
RUN chmod -R 777 /app && mkdir /app/log

# 设置时区
ENV TimeZone=Asia/Shanghai
# 使用软连接,并且将时区配置覆盖/etc/timezone (同步docker与宿主机的时区)
RUN ln -snf /usr/share/zoneinfo/$TimeZone /etc/localtime && echo $TimeZone > /etc/timezone

# 暴露端口
EXPOSE 8081

# 启动命令
# CMD允许运行时覆盖,而ENTRYPOINT不可以
 CMD ["sh", "-c", "java -jar mingink-gateway.jar >./log/log.out 2>&1"]

其它两个模块 mingink-modules-systems 和 mingink-modules-article 模块也类似,把模块名称改改就行。

五、运行 Docker Compose 文件

在服务器的项目根目录下,先执行环境部署文件 docker-compose.env.yml:

docker compose -f docker-compose.env.yml up -d --build

再执行业务部署文件 docker-compose.service.yml

docker compose -f docker-compose.service.yml up -d --build

然后查看 docker 容器运行情况:

docker ps -a

在这里插入图片描述
如果遇到某一服务启动失败,可以单独启动该服务:

ocker compose -f docker-compose.service.yml up mingink-gateway

然后就可以开始测试你安装的服务是否正常运行了。

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

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

相关文章

二叉树最长路径问题(x+1,x++,++x 问题详解)

首先遇到的问题是&#xff0c;在二叉树求最短路径中&#xff0c;DFS参数x的传入导致的结果不同问题 #include<iostream> #include<iomanip> #include<cstring> using namespace std; int maxi; char path[1000],ans[1000]; typedef struct BiTLnode{char da…

Restormer: Efficient Transformer for High-Resolution Image Restoration

Abstract 由于卷积神经网络&#xff08;CNN&#xff09;在从大规模数据中学习可概括的图像先验方面表现良好&#xff0c;因此这些模型已广泛应用于图像恢复和相关任务。最近&#xff0c;另一类神经架构 Transformer 在自然语言和高级视觉任务上表现出了显着的性能提升。虽然 T…

SpringMVC基本原理

第一章&#xff1a;Java web的发展历史 一.Model I和Model II 1.Model I开发模式 Model1的开发模式是&#xff1a;JSPJavaBean的模式&#xff0c;它的核心是Jsp页面&#xff0c;在这个页面中&#xff0c;Jsp页面负责整合页面和JavaBean&#xff08;业务逻辑&#xff09;&…

23.1 微服务理论基础

23.1 微服务基础 1. 微服务介绍2. 微服务特点3. 微服务优缺点4. 微服务两大门派5. 微服务拆分6. 微服务扩展6.1 服务扩展6.2 按需扩展7. 微服务重要模块******************************************************************************************************************

自然语言处理实验2 字符级RNN分类实验

实验2 字符级RNN分类实验 必做题&#xff1a; &#xff08;1&#xff09;数据准备&#xff1a;academy_titles.txt为“考硕考博”板块的帖子标题&#xff0c;job_titles.txt为“招聘信息”板块的帖子标题&#xff0c;将上述两个txt进行划分&#xff0c;其中训练集为70%&#xf…

超薄片式厚膜电阻

超薄片式厚膜电阻器具有许多碳电阻器特性;它们可以做得很小&#xff0c;而且大批量的成本非常低。同时厚膜电阻器具有高达10TW&#xff08;太欧姆&#xff09;的高电阻值、非常高的温度性能和高电压能力&#xff0c;并且本质上是无感的。它们适用于医疗、航空航天和井下&#x…

比Let‘s Encrypt更简单更齐全的免费证书申请教程

步骤一 打开JoySSL官网&#xff0c;注册属于你的专属账号&#xff1b; 永久免费SSL证书申请地址真正完全且永久免费&#xff01;不用您花一分钱&#xff0c;SSL证书免费使用90天&#xff0c;并且还支持连续签发。JoySSL携手全球权威可信顶级根&#xff0c;自研新一代SSL证书&…

YOLOV5 部署:QT的可视化界面推理(创建UI,并编译成py文件)

1、前言 之前用YOLOV5 做了一个猫和老鼠的实战检测项目,本章将根据之前训练好的权重进行部署,搭建一个基于QT的可视化推理界面,可以检测图片和视频 本章使用的数据集和权重参照:YOLOV5 初体验:简单猫和老鼠数据集模型训练-CSDN博客 可视化界面如下: 2、安装Pyside6 本…

【Leetcode每日一题】 递归 - 合并两个有序链表(难度⭐)(35)

1. 题目解析 题目链接&#xff1a;21. 合并两个有序链表 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 2.算法原理 1. 递归函数定义与功能 递归函数的主要任务是将两个有序链表合并成一个新的有序链表&#xff0c;并返回合并后…

面试常问:为什么 Vite 速度比 Webpack 快?

前言 最近作者在学习 webpack 相关的知识&#xff0c;之前一直对这个问题不是特别了解&#xff0c;甚至讲不出个123....&#xff0c;这个问题在面试中也是常见的&#xff0c;作者在学习的过程当中总结了以下几点&#xff0c;在这里分享给大家看一下&#xff0c;当然最重要的是…

PostgreSQL从入门到精通教程 - 第46讲:poc-tpch测试

PostgreSQL从小白到专家&#xff0c;是从入门逐渐能力提升的一个系列教程&#xff0c;内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容&#xff0c;希望对热爱PG、学习PG的同学们有帮助&#xff0c;欢迎持续关注CUUG PG技术大讲堂。 第46讲&#…

【计算机网络】概述

文章目录 一、Internet 因特网1.1 网络、互联网、因特网1.2 因特网的组成 二、三种交换方式2.1 电路交换 &#xff08;Circuit Switching&#xff09;2.2 *分组交换 &#xff08;Packet Switching&#xff09;2.3 报文交换 &#xff08;Message Switching&#xff09; 三、计算…

基于Verilog的简易CPU设计

前言 本篇文章将简单讲解CPU之间各部分的功能及接线&#xff0c;并提供Verilog模拟CPU的各个组成部分。该CPU可以完成一些操作&#xff0c;如&#xff1a;加减法&#xff0c;与或&#xff0c;指令跳转等&#xff0c;最后提供testbench用于测试该CPU的工作情况是否符合预期。 C…

雷卯推荐基于USB 快充(USB-PD) 浪涌保护器件

USB PD 从2010年USB BC1.2 &#xff1a;单一5V 1.5A&#xff0c;到2021 年USB PD 3.1&#xff0c;支持电压 5V、9V、15V 和 20V&#xff0c;28V、36V 和 48V, 充电功率同步提升至240W。应用范围从从手机、平板电脑、笔记本电脑&#xff0c;逐渐向显示器、服务器、电机驱动和通信…

企业架构设计方法与实践中的架构治理演进、架构评估方法、架构成熟度模型

企业架构设计方法与实践中的架构治理演进、架构评估方法、架构成熟度模型。 架构治理演进: 架构治理是指通过设立和执行一套政策和程序,来管理和控制一个组织的架构活动。架构治理演进是一个持续的过程,需要根据组织的实际情况进行定期审查和调整。 在演进过程中,重点需要…

Python学习01 python开发的准备工作 1.Python解释器的下载 2.Pycharm集成开发环境的安装

0.按照步骤&#xff0c;快速进行python的开发准备工作 1. Python解释器的下载 下载地址 https://www.python.org/ 选择对应你的系统的安装包 2.记得勾选这里将python加入你的路径中 3.有如下四个程序表明安装成功 4.点击上图中的第二个程序打开窗口检查解释器能否正常工作 输…

Flutter 多语言自动化本地化生成器

Flutter 多语言自动化本地化生成器 这是一个为Flutter设计的插件&#xff0c;通过从Excel表格提取的CSV文件自动生成Dart本地化文件&#xff0c;以简化应用程序本地化的流程。这个工具通过自动化创建多语言资源文件&#xff0c;简化了开发人员和翻译人员的工作流程。 特点 默…

MQTT.fx实现(MQTT Client)连接物联网平台(ThingsCloud )

目录 概述 1 ThingsCloud平台介绍 2 ThingsCloud创建项目 2.1 创建项目 2.2 创建数据类型 2.3 创建设备类型 3 发布和订阅主题 3.1 发布Topic 3.2 订阅主题Topic 4 使用MQTT.fx 测试ThingsClond 4.1 使用MQTT.fx连接ThingsClond 4.2 MQTT.fx 订阅ThingsCloud Messag…

Unity资源热更新----AssetBundle

13.1 资源热更新——AssetBundle1-1_哔哩哔哩_bilibili Resources 性能消耗较大 Resources文件夹大小不能超过2个G 获取AssetBundle中的资源 打包流程 选择图片后点击 创建文件夹&#xff0c;Editor优先编译 打包文件夹位置 using UnityEditor; using UnityEngine; public cla…

探索编程新纪元:Code GeeX、Copilot与通义灵码的智能辅助之旅

在人工智能技术日新月异的今天&#xff0c;编程领域的革新也正以前所未有的速度推进。新一代的编程辅助工具&#xff0c;如Code GeeX、Copilot和通义灵码&#xff0c;正在重塑开发者的工作流程&#xff0c;提升编程效率&#xff0c;并推动编程教育的普及。本文将深入探讨这三款…