You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

261 lines
8.6 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

在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服务。