Files
wiki_crawler/docs/docker.md
2026-01-27 01:41:45 +08:00

141 lines
4.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Wiki Crawler Backend 部署操作手册
## 核心配置信息 (每次只需修改这里)
**在执行命令前,请先确定本次发布的** **版本号**
| **字段** | **当前值 (示例)** | **说明** | **每次要改吗?** |
| -------------------- | ---------------------------------- | ------------------------------ | ---------------------- |
| **Version** | **v1.0.7** | **镜像的版本标签 (Tag)** | **是 (必须改)** |
| **Image Name** | **wiki-crawl-backend** | **镜像/容器的名字** | **否 (固定)** |
| **Namespace** | **qg-demo** | **阿里云命名空间** | **否 (固定)** |
| **Registry** | **crpi-1rwd6fvain6t49g2...** | **阿里云仓库地址** | **否 (固定)** |
---
## 第一阶段:本地电脑 (Windows) - 打包与上传
**打开 PowerShell 或 CMD进入项目根目录。**
### 1. 构建镜像 (Build)
**修改命令最后的版本号** **v1.0.7**
```powershell
docker build -t crpi-1rwd6fvain6t49g2.cn-hangzhou.personal.cr.aliyuncs.com/qg-demo/wiki-crawl-backend:v1.0.7 .
```
### 2. 推送镜像 (Push)
**修改命令最后的版本号** **v1.0.7**
```powershell
docker push crpi-1rwd6fvain6t49g2.cn-hangzhou.personal.cr.aliyuncs.com/qg-demo/wiki-crawl-backend:v1.0.7
```
> **成功标准:** **看到进度条走完,且最后显示** **Pushed**。
---
## 第二阶段:云服务器 (Linux) - 部署更新
**使用 SSH 登录阿里云服务器,按顺序执行。**
### 1. 拉取新镜像 (Pull)
**修改命令最后的版本号** **v1.0.7**
```bash
docker pull crpi-1rwd6fvain6t49g2.cn-hangzhou.personal.cr.aliyuncs.com/qg-demo/wiki-crawl-backend:v1.0.7
```
### 2. 停止并删除旧容器
**这一步是为了释放端口,不会删除镜像文件**
```bash
docker stop wiki-crawl-backend
docker rm wiki-crawl-backend
```
### 3. 启动新容器 (Run) - 关键步骤
**修改命令最后的版本号** **v1.0.7**
**code**Bash
```bash
docker run -d --name wiki-crawl-backend \
-e PYTHONUNBUFFERED=1 \
-p 80:8000 \
crpi-1rwd6fvain6t49g2.cn-hangzhou.personal.cr.aliyuncs.com/qg-demo/wiki-crawl-backend:v1.0.7
```
### 4. 验证与日志查看
**code**Bash
```
# 查看容器状态 (STATUS 应该是 Up)
docker ps
# 查看实时日志 (按 Ctrl+C 退出)
docker logs -f wiki-crawl-backend
```
---
## 第三阶段:清理工作 (可选)
**为了防止服务器硬盘被旧版本的镜像塞满,建议定期执行清理。**
**code**Bash
```
# 删除所有“未被使用”的旧镜像
docker image prune -a -f
```
---
## 附录:命令参数详解 (小白必读)
**在** **docker run** **命令中,各个参数的含义如下:**
### 1. **-d** **(Detached)**
* **含义:** **后台运行。**
* **作用:** **容器启动后会默默在后台跑,不会占用你的黑窗口。如果不加这个,你一关 SSH 窗口,服务就停了。**
### 2. **--name wiki-crawl-backend**
* **含义:** **给容器起个名字。**
* **作用:** **有了名字,以后你要停止它、重启它、看日志,直接叫它的名字就行(比如** **docker stop wiki-crawl-backend**),不用去查那串随机的容器 ID。
### 3. **-e PYTHONUNBUFFERED=1**
* **含义:** **设置环境变量 (Environment Variable)。**
* **作用:** **这是一个 Python 专用的设置。意思是**“不要缓存输出”**。**
* **如果不加Python 会把日志憋在肚子里,攒够了一坨才吐出来,导致你用** **docker logs** **只能看到几分钟前的日志。**
* **加了:日志实时打印,报错立刻能看到。**
### 4. **-p 80:8000** **(Port Mapping)**
* **含义:** **端口映射。格式是** **宿主机端口:容器内部端口**
* **解析:**
* **80 (左边)**:这是阿里云服务器对外的门牌号。用户访问 **http://1.2.3.4** **时,默认就是找 80 端口。**
* **8000 (右边)**:这是你 Python 代码 (FastAPI/Uvicorn) 实际监听的端口。
* **作用:** **把服务器大门 (80) 接到的客人,领到 Python 小房间 (8000) 去。**
### 5. 那个超长的 URL
**crpi-1rwd6fvain6t49g2.cn-hangzhou.personal.cr.aliyuncs.com/qg-demo/wiki-crawl-backend:v1.0.7**
* **Registry (仓库地址)**: **crpi-1rwd...aliyuncs.com** **-> 你的专属阿里云仓库服务器。**
* **Namespace (命名空间)**: **qg-demo** **-> 你在仓库里划出的个人地盘。**
* **Image Name (镜像名)**: **wiki-crawl-backend** **-> 这个项目的名字。**
* **Tag (标签)**: **v1.0.7** **-> 相当于软件的版本号。如果不写 Tag默认就是** **latest**。**生产环境强烈建议写明确的版本号**,方便回滚(比如 1.0.3 挂了,你可以立马用 1.0.2 启动)。