diff --git a/Dockerfile b/Dockerfile index b7fd5e9..e42e053 100644 --- a/Dockerfile +++ b/Dockerfile @@ -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"] \ No newline at end of file +CMD ["python", "backend.py","--env=prod"] \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..b27fa02 --- /dev/null +++ b/README.md @@ -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离线部署pgvector(PostgreSQL的向量扩展),需要准备适配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服务。 + + + +