docs(README): 添加 arm64 架构下 MySQL、pgvector 和 Nginx 的离线部署教程

main
lijiazheng 6 months ago
parent 6156a3c824
commit 31d23391d7

@ -15,7 +15,7 @@ RUN pip install --no-cache-dir -i https://mirrors.aliyun.com/pypi/simple/ -r req
# 暴露应用程序运行的端口(如果需要) # 暴露应用程序运行的端口(如果需要)
EXPOSE 9099 EXPOSE 8000
# 启动命令 # 启动命令
CMD ["python", "app.py","--env=prod"] CMD ["python", "backend.py","--env=prod"]

@ -0,0 +1,260 @@
在arm64架构机器上通过Docker离线部署MySQL 8.0.39,需要先准备离线镜像包,再进行部署。以下是详细步骤:
### 一、准备离线镜像(需联网环境)
1. **在有网络的arm64机器上拉取镜像**
```bash
# 拉取arm64架构的mysql:8.0.39(官方镜像已支持多架构,会自动匹配当前架构)
docker pull mysql:8.0.39
```
2. **将镜像导出为离线包**
```bash
# 导出镜像为tar文件
docker save -o mysql_8.0.39_arm64.tar mysql:8.0.39
```
3. **将离线包传输到目标机器**
通过U盘、移动硬盘等方式`mysql_8.0.39_arm64.tar` 复制到需要离线部署的arm64机器上。
### 二、离线部署步骤目标arm64机器
1. **加载离线镜像**
```bash
# 加载镜像
docker load -i mysql_8.0.39_arm64.tar
# 验证镜像是否加载成功
docker images | grep mysql
```
2. **创建数据存储目录(可选,用于持久化数据)**
```bash
# 创建数据目录并设置权限
mkdir -p /data/mysql/{data,conf,logs}
chmod -R 777 /data/mysql # 生产环境建议根据实际用户权限调整
```
3. **启动MySQL容器**
```bash
docker run -d \
--name mysql8 \
--restart=always \
-p 3306:3306 \
-v /data/mysql/data:/var/lib/mysql \
-v /data/mysql/conf:/etc/mysql/conf.d \
-v /data/mysql/logs:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=YourPassword123 \ # 设置root密码
-e TZ=Asia/Shanghai \ # 设置时区
mysql:8.0.39
```
参数说明:
- `-v`:挂载目录,实现数据持久化(容器删除后数据不丢失)
- `-e MYSQL_ROOT_PASSWORD`必须设置指定root用户密码
- `--restart=always`容器随Docker服务自动启动
### 三、验证部署
1. **查看容器状态**
```bash
docker ps | grep mysql8
```
2. **进入容器测试**
```bash
# 进入容器
docker exec -it mysql8 bash
# 登录MySQL
mysql -u root -p
# 输入设置的密码YourPassword123
# 验证版本
mysql> select version();
```
### 四、注意事项
1. 确保目标机器是arm64架构通过 `uname -m` 命令验证,输出应为 `aarch64`
2. 若需要自定义配置(如字符集、端口等),可在 `/data/mysql/conf` 目录下创建 `my.cnf` 文件,容器会自动加载。
3. 生产环境建议避免使用 `777` 权限,应根据实际运行用户调整目录权限。
4. 如需迁移,只需备份 `/data/mysql` 目录和镜像包,在新机器上重复步骤二即可。
要在arm64架构机器上通过Docker离线部署pgvectorPostgreSQL的向量扩展需要准备适配arm64的镜像并进行离线迁移。以下是详细步骤
### 一、准备离线镜像(需联网环境)
1. **拉取arm64架构的pgvector镜像**
官方提供的`pgvector/pgvector`镜像已支持多架构可直接指定arm64架构拉取
```bash
# 拉取带pgvector扩展的PostgreSQL镜像arm64架构
docker pull --platform linux/arm64 pgvector/pgvector:pg16
```
- 这里以PostgreSQL 16版本为例也可替换为其他版本如`pg15`、`pg14`
2. **导出镜像为离线包**
```bash
docker save -o pgvector_arm64.tar pgvector/pgvector:pg16
```
3. **传输离线包到目标机器**
通过U盘、SCP等方式将`pgvector_arm64.tar`复制到需要离线部署的arm64机器。
### 二、离线部署步骤目标arm64机器
1. **加载离线镜像**
```bash
# 加载镜像
docker load -i pgvector_arm64.tar
# 验证镜像确认架构为arm64
docker inspect -f '{{.Architecture}}' pgvector/pgvector:pg16
# 输出应为 "arm64"
```
2. **创建数据持久化目录**
```bash
# 创建数据和配置目录
mkdir -p /data/pgvector/{data,conf,logs}
chmod -R 700 /data/pgvector # PostgreSQL建议使用严格权限
```
3. **启动pgvector容器**
```bash
docker run -d \
--name pgvector \
--restart=always \
-p 5432:5432 \
-v /data/pgvector/data:/var/lib/postgresql/data \
-v /data/pgvector/conf:/etc/postgresql/conf.d \
-v /data/pgvector/logs:/var/log/postgresql \
-e POSTGRES_PASSWORD=YourStrongPassword \ # 设置数据库密码
-e POSTGRES_USER=pguser \ # 自定义用户名(可选)
-e POSTGRES_DB=vectordb \ # 初始化数据库名(可选)
-e TZ=Asia/Shanghai \
pgvector/pgvector:pg16
```
### 三、验证pgvector部署
1. **进入容器并连接数据库**
```bash
# 进入容器
docker exec -it pgvector bash
# 连接PostgreSQL
psql -U pguser -d vectordb
# 输入密码YourStrongPassword
```
2. **验证pgvector扩展**
在PostgreSQL终端执行
```sql
-- 启用pgvector扩展
CREATE EXTENSION vector;
-- 验证扩展是否生效
SELECT * FROM pg_extension WHERE extname = 'vector';
```
若返回包含`vector`的记录,则表示扩展加载成功。
### 四、注意事项
1. **架构兼容性**:通过`uname -m`确认目标机器为`aarch64`即arm64架构
2. **版本选择**:镜像标签`pg16`表示PostgreSQL 16可根据需求替换为其他版本需与pgvector兼容
3. **数据安全**:生产环境需避免使用`700`以外的宽松权限建议根据实际用户ID调整目录权限。
4. **自定义配置**:可在`/data/pgvector/conf`目录下创建`postgresql.conf`添加自定义配置(如`shared_buffers`、`max_connections`等)。
通过以上步骤即可在arm64机器上离线部署带有pgvector扩展的PostgreSQL用于向量存储和相似度搜索场景。
在arm64架构机器上通过Docker离线部署Nginx并使用自定义配置文件可按以下步骤操作
### 一、准备离线镜像(需联网环境)
1. **拉取arm64架构的Nginx镜像**
```bash
# 拉取指定arm64架构的nginx镜像以最新稳定版为例
docker pull --platform linux/arm64 nginx:stable
```
2. **导出镜像为离线包**
```bash
docker save -o nginx_arm64.tar nginx:stable
```
3. **传输文件到目标机器**
将离线镜像包 `nginx_arm64.tar` 和你的自定义配置文件 `nginx.conf` 复制到目标arm64机器可通过U盘、移动硬盘等
### 二、离线部署步骤目标arm64机器
1. **加载离线镜像**
```bash
# 加载镜像
docker load -i nginx_arm64.tar
# 验证镜像架构确保为arm64
docker inspect -f '{{.Architecture}}' nginx:stable
# 输出应为 "arm64"
```
2. **准备配置文件和目录结构**
假设你的自定义 `nginx.conf` 已放在目标机器的 `/root/nginx/conf` 目录(可根据实际路径调整):
```bash
# 创建必要目录(配置、日志、网页根目录)
mkdir -p /root/nginx/{conf,logs,html}
# 将你的nginx.conf放入配置目录确保文件已传输到目标机器
# 假设你的nginx.conf在当前目录移动到配置目录
mv ./nginx.conf /root/nginx/conf/
```
3. **启动Nginx容器挂载自定义配置**
```bash
docker run -d \
--name nginx \
--restart=always \
-p 80:80 \ # 映射端口可根据需要添加443等
-v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro \ # 挂载自定义配置(只读)
-v /root/nginx/logs:/var/log/nginx \ # 挂载日志目录
-v /root/nginx/html:/usr/share/nginx/html \ # 挂载网页根目录
nginx:stable
```
### 三、验证部署
1. **查看容器状态**
```bash
docker ps | grep nginx
```
若状态为 `Up` 则表示启动成功。
2. **验证配置是否生效**
```bash
# 进入容器
docker exec -it nginx bash
# 查看加载的配置
cat /etc/nginx/nginx.conf
```
确认内容与你的自定义配置一致。
3. **测试访问**
在机器本地执行 `curl http://localhost`或从其他机器访问该服务器的80端口验证Nginx是否按配置工作。
### 四、注意事项
1. **路径权限**:确保宿主机的 `/root/nginx` 目录及子目录有足够权限(建议 `chmod -R 755 /root/nginx`),避免容器内无法读取配置。
2. **配置正确性**:自定义 `nginx.conf` 需符合Nginx语法可在启动前通过 `nginx -t -c /path/to/nginx.conf` 验证需在有Nginx环境的机器上
3. **端口映射**:根据你的配置文件中的监听端口,在 `docker run` 命令中添加对应的 `-p` 映射如HTTPS需映射443端口
4. **重启配置**:若修改了 `nginx.conf`,需重启容器生效:`docker restart nginx`。
通过以上步骤即可在arm64机器上离线部署使用自定义配置的Nginx服务。
Loading…
Cancel
Save