阶段三:容器化技术之Docker镜像管理与实战

安装Harbor镜像仓库

准备一台全新的服务器,并安装docker-ce

服务器名称地址用途备注
harbor.itcast.cn192.168.88.117镜像仓库

Harbor 核心架构

<sheet sheet-id="3aAjpG" token="Psl0sQgxDhvjbttfg5zcXCTnnOb"></sheet>

Harbor安装

[root@web01 ssl]# wget https://github.com/goharbor/harbor/releases/download/v2.12.2/harbor-offline-installer-v2.12.2.tgz

创建目录并上传我们的证书,并把自己的证书上传到/data/harbor/ssl
[root@web01 ssl]# mkdir -p /data/harbor/{ssl,harbor-data}

[root@web01 ssl]# tar xf harbor-offline-installer-v2.12.2.tgz -C /data/harbor
[root@web01 ssl]# cd /data/harbor/
[root@web01 ssl]# cp harbor.yml.tmpl harbor.yml

[root@web01 harbor]# vim harbor.yml
  5 hostname: harbor.lanqicheng.top               #   将hostname改成harbor服务器主机名称

  7 # http related config
  8 http:
  9   # port for http, default is 80. If https enabled, this port will redirect to https port
 10   port: 80
 11
 12 # https related config
 13 https:                                                                                                                              #    关闭 https
 14   # https port for harbor, default is 443 #  关闭 https
 15   port: 443                                                                                                                        # 关闭 https
 16   # The path of cert and key files for nginx
 17   certificate: /data/harbor/ssl/lanqicheng.top.pem
 18   private_key: /data/harbor/ssl/lanqicheng.top.key
 19   # enable strong ssl ciphers (default: false)
 20   # strong_ssl_ciphers: false

 47 harbor_admin_password: 123  #   admin用户的默认密码,我这里改为简单的123
 66 data_volume: /data/harbor/harbor-data         #数据存放位置      

[root@harbor harbor]# ./install.sh

安装完成后,会自动起来的
默认用户名是admin 密码:配置文件里面设置

命令作用:

执行结果:

关键参数:

参数说明
https://github.com/goharbor/harbor/releases/download/v2.12.2/harbor-offline-installer-v2.12.2.tgz普通目标 URL https://github.com/goharbor/harbor/releases/download/v2.12.2/harbor-offline-installer-v2.12.2.tgz,命令会访问这个地址或从这里下载内容。
-p核心递归创建目录;父目录不存在时一并创建,目录已经存在也不报错。
harbor.yml普通配置文件路径,命令会读取这个文件里的配置。

注意事项:

在软件安装目录下面有docker-compose.yml

#启动

#关闭


**关键参数:**

| 参数 | 说明 |
|---|---|
| `-d` | 【核心】 | 后台运行容器,命令返回后容器继续运行,终端不会被容器日志占用。 |

**注意事项:**




![](/assets/feishu-images/5b0739cfb29858e5601ba8e5.png)


#镜像仓库登录

#镜像打标签
#推送镜像

#拉取镜像

关键参数:

参数说明
harbor.lanqicheng.top普通镜像仓库地址 harbor.lanqicheng.top,Docker 将向这个仓库发起认证。
-u普通指定登录用户名 admin
-p核心指定镜像仓库密码;不要把真实密码写进公开文档或脚本,推荐使用凭据管理。
123普通镜像仓库地址 123,Docker 将向这个仓库发起认证。
nginx:latest普通Docker 镜像引用 nginx:latest,指定要运行、上传、下载或重新标记的镜像。
harbor.lanqicheng.top/zhongzhou/nginx:latest普通Docker 镜像引用 harbor.lanqicheng.top/zhongzhou/nginx:latest,指定要运行、上传、下载或重新标记的镜像。

注意事项:

中国老龄化程度加深,我国老龄事业和养老服务体系的发展得到了国家的高度重视,在国家政策的支持下,我国智慧养老产业主体持续增多,产业链不断整合,发展前景较好。我国正在形成一个多元化“互联网+养老”的智慧老年护理服务系统,智慧养老是我国的必然趋势

整体业务流程:

中州养老系统为养老院量身定制开发专业的养老管理软件产品;涵盖来访管理、入退管理、在住管理、服务管理、财务管理等功能模块,涉及从来访参观到退住办理的完整流程。

image

中州养老项目分为两端,一个是管理后台,另外一个是家属端

image

业务主页效果:

image
image

下图展现了中州养老项目主要使用的技术:

image

技术选型


**注意事项:**



**前后端分离开发**,就是在项目开发过程中,对于前端代码的开发由专门的前端人员负责,后端代码则由后端开发人员负责,这样可以做到分工明确、各司其职、提高开发效率,前后端代码并行开发,可以加快项目开发进度。目前,前后端分离开发方式已经被越来越多的公司所采用,成为当前项目开发的主流的方式



![](/assets/feishu-images/d8fa0c64edca83f62bd7a311.png)

开发流程:


![](/assets/feishu-images/1de7cbc640fc2a361953624b.png)


例如:

![](/assets/feishu-images/3325ee3625b29e10d42e64db.png)



特点:


---


![](/assets/feishu-images/aef032bca9691657e9aefc51.png)



![](/assets/feishu-images/cc7f85f2893906e0ed795e3d.png)


![](/assets/feishu-images/49658a32ab432f3236664d11.png)


![](/assets/feishu-images/a0252a2ea159abadf4a62a1e.png)

![](/assets/feishu-images/cd5709277442ae137a5c4455.png)


![](/assets/feishu-images/9b880ff132913f8f2c993684.png)


![](/assets/feishu-images/6995d84ee54ed0081211015a.png)

![](/assets/feishu-images/8185021723ca2bf817cc60ae.png)


![](/assets/feishu-images/3198c2f170dd8986849d8435.png)

![](/assets/feishu-images/13f269ed22851355f4188cd9.png)

![](/assets/feishu-images/886befef64178961909b27c0.png)

![](/assets/feishu-images/02b454bd07c4b3e926995558.png)

![](/assets/feishu-images/a5ff4c29b561f28c87fce8cc.png)


![](/assets/feishu-images/236ef4af11a0256dd32cc24f.png)

注意事项:

image

实施流程步骤:


**命令拆解:**

| 命令部分 | 重要程度 | 详细解释 |
|---|---|---|
| `-p` | 【核心】 | 递归创建目录;父目录不存在时一并创建,目录已经存在也不报错。 |
| `-i` | 【普通】 | 指定要导入的镜像归档文件,例如 `nginx.tar`。 |
| `jdk11.tar` | 【普通】 | 镜像归档文件 `jdk11.tar`,Docker 会从这个本地 tar 文件导入镜像。 |

**注意事项:**

#镜像的定义






#镜像的构建

命令拆解:

命令部分重要程度详细解释
-t普通为构建结果设置镜像名称和标签,值为 zzyl-admin:latest
zzyl-admin:latest普通zzyl-admin:latest 是 Docker build 的目标或参数;它决定当前动作实际处理的镜像、容器、网络、数据卷或 Compose 服务。
.普通Docker 构建上下文,表示当前目录;Dockerfile 中需要的文件必须位于这个目录及其子目录内。

注意事项:

services: nginx: ports: volumes: environment: depends_on: networks: java: ports: environment: depends_on: networks: mysql: environment: volumes: networks: redis: ports: volumes: networks: networks: zzyl-net:


**命令拆解:**

| 命令部分 | 重要程度 | 详细解释 |
|---|---|---|
| `docker-compose.yaml` | 【普通】 | 配置文件路径,命令会读取这个文件里的配置。 |

**注意事项:**


    }
        }
}

注意事项:


**命令拆解:**

| 命令部分 | 重要程度 | 详细解释 |
|---|---|---|
| `-d` | 【核心】 | 后台运行容器,命令返回后容器继续运行,终端不会被容器日志占用。 |
| `--tail` | 【普通】 | 限制显示最近的日志行数,数量由后面的 `300` 指定。 |
| `300` | 【普通】 | 日志行数 `300`,表示只显示最近的这几行日志。 |

**注意事项:**

命令拆解:

命令部分重要程度详细解释
ry-zzyl_20240913.sql普通复制路径 ry-zzyl_20240913.sql;路径中带 容器名: 的一侧表示容器内路径,另一侧表示宿主机路径。
mysql-zzyl:/root普通复制路径 mysql-zzyl:/root;路径中带 容器名: 的一侧表示容器内路径,另一侧表示宿主机路径。
-it普通同时启用交互输入和伪终端,常用于进入容器内的 bash 或 sh。
/bin/bash普通容器内要执行的命令或参数 /bin/bash
-p核心-p 的含义取决于当前命令,不能直接套用 Docker 端口映射解释。

注意事项:


**命令拆解:**

| 命令部分 | 重要程度 | 详细解释 |
|---|---|---|
| `--tail` | 【普通】 | 限制显示最近的日志行数,数量由后面的 `300` 指定。 |
| `300` | 【普通】 | 日志行数 `300`,表示只显示最近的这几行日志。 |
| `-f` | 【必看】 | 持续跟随日志输出,按 Ctrl+C 退出查看而不会停止容器。 |

**注意事项:**







     近年来,随着ChatGPT的广泛应用,基于大规模语言模型(LLM)的技术已成为人工智能领域的研究和应用热点。尤其是大模型在各类自然语言处理任务中的成功应用,推动了教育行业的智能化转型。然而,当前市面上大多数大语言模型存在一个普遍的问题:这些模型主要依赖于过往的训练数据,无法动态获取最新的知识以及各企业特有的私有知识。这种局限性常常导致生成答案时出现“幻觉”问题,即模型提供的答案与实际情况不符或不准确。

**为了有效解决这一问题,企业普遍采用了以下两种主要手段**:



假设知识库文档是:
你可以按以下步骤处理:
用户得到明确易懂的步骤,而不是碎片信息。
![](/assets/feishu-images/60bd2a4bc08961a984d05270.png)









#创建目录
#创建Mysql配置文件
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
port=3306
log-error=/usr/local/mysql/data/mysql.err
log-bin=/usr/local/mysql/data/binlog
server-id=10
character_set_server=utf8mb4
gtid-mode=on
log-slave-updates=1
sql_mode=NO_ENGINE_SUBSTITUTION
innodb_buffer_pool_size=2G

#定义项目服务
services:
  etcd:
    environment:
    volumes:

  minio:
    environment:
    volumes:
    healthcheck:

  standalone:
    environment:
    volumes:
    ports:
    depends_on:

  redis:
    ports:
    volumes:
  mysql:
    ports:
    environment:
    volumes:
networks:
  default:

#启动服务

注意事项:

#解压缩 #切换目录 #复制sql文件到容器内部 #登录到容器内部进行数据库导入 #登录到数据库进行数据导入 #创建数据库 #切换数据库 #数据库导入


**注意事项:**

#修改源代码的config.ini配置文件
#改成自己服务器地址和阿里云大模型对应的sk
[mysql]

[redis]

[milvus]

[llm]

[retrieval]

[logger]
[app]

#定义镜像


#构建镜像

注意事项:

#setuptools版本问题修复 ... integrated_qa_system: ports: depends_on:

#启动服务

#登录容器内部进行项目数据库创建 #重新构建镜像

... integrated_qa_system: ports: depends_on:


**命令拆解:**

| 命令部分 | 重要程度 | 详细解释 |
|---|---|---|
| `docker-compose.yaml` | 【普通】 | 配置文件路径,命令会读取这个文件里的配置。 |
| `-d` | 【核心】 | 后台运行容器,命令返回后容器继续运行,终端不会被容器日志占用。 |
| `-it` | 【普通】 | 同时启用交互输入和伪终端,常用于进入容器内的 bash 或 sh。 |
| `/bin/bash` | 【普通】 | 容器内要执行的命令或参数 `/bin/bash`。 |
| `s\|http://mirror.aliyuncs.com\|https://mirrors.aliyun.com\|g` | 【普通】 | 替换规则,格式大致是 `s\|旧内容\|新内容\|g`;`g` 表示一行里匹配到的内容都替换。 |
| `-t` | 【普通】 | 为构建结果设置镜像名称和标签,值为 `integrated_qa_system:latest`。 |
| `integrated_qa_system:latest` | 【普通】 | `integrated_qa_system:latest` 是 Docker `build` 的目标或参数;它决定当前动作实际处理的镜像、容器、网络、数据卷或 Compose 服务。 |

**注意事项:**




本文由飞书云文档同步生成。涉及命令、SQL、配置示例时,请以飞书源文档和实际环境执行结果为准。