阶段三:容器化技术之Docker镜像管理与实战
安装Harbor镜像仓库
准备一台全新的服务器,并安装docker-ce
| 服务器名称 | 地址 | 用途 | 备注 |
|---|---|---|---|
| harbor.itcast.cn | 192.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;curl默认把响应写到终端,wget默认下载到文件。可据 HTTP 状态、响应内容或下载结果判断服务是否可访问。
- 创建目录
/data/harbor/{ssl,harbor-data};-p会同时创建缺失的父目录,并且目录已存在时不报错。
- 按选项打包或解包归档文件;
-c表示创建归档,-x表示解包,-f后面指定归档文件名。
- 把
harbor.yml.tmpl复制到harbor.yml;目标已存在时可能被覆盖,目录复制通常需要-r或-a。
- 这条命令用于打开并编辑文件。进入编辑器后需要保存退出,修改才会写回文件。
执行结果:
- 成功后目标文件会下载到当前目录或
-O指定的位置。
- 成功后目标目录会存在;可用
ls -ld 目录名查看目录权限和属主。
- 成功后会生成归档文件或把归档内容解压到目标目录;用
tar -tf 归档文件可查看归档内容。
- 成功后目标路径会出现源文件或目录的副本;可用
ls -l 目标路径核对。
- 编辑器会打开目标文件;保存并退出后文件内容才会改变。
- 成功后应以该命令实际输出、生成的文件或目标服务状态为准;失败时先阅读终端报错,再核对命令参数和运行环境。
关键参数:
| 参数 | 说明 | |
|---|---|---|
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` | 【核心】 | 后台运行容器,命令返回后容器继续运行,终端不会被容器日志占用。 |
**注意事项:**

#镜像仓库登录
#镜像打标签
#推送镜像
#拉取镜像关键参数:
| 参数 | 说明 | |
|---|---|---|
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,指定要运行、上传、下载或重新标记的镜像。 |
注意事项:
中国老龄化程度加深,我国老龄事业和养老服务体系的发展得到了国家的高度重视,在国家政策的支持下,我国智慧养老产业主体持续增多,产业链不断整合,发展前景较好。我国正在形成一个多元化“互联网+养老”的智慧老年护理服务系统,智慧养老是我国的必然趋势
整体业务流程:
中州养老系统为养老院量身定制开发专业的养老管理软件产品;涵盖来访管理、入退管理、在住管理、服务管理、财务管理等功能模块,涉及从来访参观到退住办理的完整流程。

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

业务主页效果:


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

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

开发流程:

例如:

特点:













注意事项:

实施流程步骤:
**命令拆解:**
| 命令部分 | 重要程度 | 详细解释 |
|---|---|---|
| `-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)的技术已成为人工智能领域的研究和应用热点。尤其是大模型在各类自然语言处理任务中的成功应用,推动了教育行业的智能化转型。然而,当前市面上大多数大语言模型存在一个普遍的问题:这些模型主要依赖于过往的训练数据,无法动态获取最新的知识以及各企业特有的私有知识。这种局限性常常导致生成答案时出现“幻觉”问题,即模型提供的答案与实际情况不符或不准确。
**为了有效解决这一问题,企业普遍采用了以下两种主要手段**:
假设知识库文档是:
你可以按以下步骤处理:
用户得到明确易懂的步骤,而不是碎片信息。

#创建目录
#创建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 服务。 |
**注意事项:**