diff --git a/aim/docker/aim_ui-3.19.0-py3-none-any.whl b/aim/docker/aim_ui-3.19.0-py3-none-any.whl new file mode 100644 index 0000000..c5cd8ba Binary files /dev/null and b/aim/docker/aim_ui-3.19.0-py3-none-any.whl differ diff --git a/docker/Dockerfile.arm b/docker/Dockerfile.arm new file mode 100644 index 0000000..ced7598 --- /dev/null +++ b/docker/Dockerfile.arm @@ -0,0 +1,11 @@ +FROM 172.20.32.187/pipeline-service/aimstack/aim:3.19.0-build-env + +RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple +COPY aim*.whl /opt/aim/ +RUN pip install /opt/aim/aim_ui-3.19.0-py3-none-any.whl +RUN pip install /opt/aim/aim-3.19.0-cp39-cp39-linux_aarch64.whl + +WORKDIR /opt/aim +RUN aim init +ENTRYPOINT ["aim"] +CMD ["up"] diff --git a/docker/Dockerfile.build-env b/docker/Dockerfile.build-env new file mode 100644 index 0000000..e10dc2d --- /dev/null +++ b/docker/Dockerfile.build-env @@ -0,0 +1,41 @@ +FROM ccr.ccs.tencentyun.com/somunslotus/python:3.9.10-slim-arm + + +# 替换 Debian 源为阿里云源 +RUN sed -i.bak \ + -e 's|http://[^/]*/debian|https://mirrors.aliyun.com/debian|g' \ + -e 's|http://security.debian.org|https://mirrors.aliyun.com/debian-security|g' \ + /etc/apt/sources.list && \ + # 清空备份文件 + rm -f /etc/apt/sources.list.bak + +ENV HTTP_PROXY="http://172.20.32.253:3128" \ + HTTPS_PROXY="http://172.20.32.253:3128" \ + NO_PROXY="localhost,127.0.0.1" \ + http_proxy="http://172.20.32.253:3128" \ + https_proxy="http://172.20.32.253:3128" \ + no_proxy="localhost,127.0.0.1" + +# 更新并安装编译工具 +RUN apt-get update -y && \ + apt-get install -y --no-install-recommends \ + build-essential \ + gcc \ + g++ \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +# 设置工作目录 +WORKDIR /app + +# 设置 pip 清华源 +RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple + +# 预先复制 requirements 文件(利用缓存层) +COPY ./requirements-new.txt /app/ + +# 安装 Python 依赖 +RUN pip install --no-cache-dir --upgrade pip && \ + pip install --no-cache-dir -r requirements-new.txt + + diff --git a/docker/aim-3.19.0-cp312-cp312-linux_aarch64.whl b/docker/aim-3.19.0-cp312-cp312-linux_aarch64.whl new file mode 100644 index 0000000..5c20af6 Binary files /dev/null and b/docker/aim-3.19.0-cp312-cp312-linux_aarch64.whl differ diff --git a/docker/aim-3.19.0-cp39-cp39-linux_aarch64.whl b/docker/aim-3.19.0-cp39-cp39-linux_aarch64.whl new file mode 100644 index 0000000..310284c Binary files /dev/null and b/docker/aim-3.19.0-cp39-cp39-linux_aarch64.whl differ diff --git a/docker/aim_ui-3.19.0-py3-none-any.whl b/docker/aim_ui-3.19.0-py3-none-any.whl new file mode 100644 index 0000000..df32dec Binary files /dev/null and b/docker/aim_ui-3.19.0-py3-none-any.whl differ diff --git a/docker/arm-build-image-node18.sh b/docker/arm-build-image-node18.sh new file mode 100755 index 0000000..e0cc670 --- /dev/null +++ b/docker/arm-build-image-node18.sh @@ -0,0 +1,66 @@ +#!/bin/bash + +# 进入182服务器,然后切换到conda activate aim-build环境进行构建 +#构建aim 包 + + +echo "build aim package success" + +#编译前端代码 +cd ../aim/web/ui + +if [ -d build ]; then + echo "rm build dir success" + rm -rf build/ +fi + +if [ -d aim_ui/build ]; then + echo "rm aim_ui/build dir success" + rm -rf aim_ui/build/ +fi + +docker run -v $(pwd):/code -w /code \ + -e http_proxy=http://172.20.32.253:3128 -e https_proxy=http://172.20.32.253:3128 \ + ccr.ccs.tencentyun.com/somunslotus/node:18-alpine-arm /bin/sh -c "npm config set registry https://registry.npmmirror.com && npm install --legacy-peer-deps --verbose && npm run build" + +if [ $? -ne 0 ]; then + echo "build ui failed" + exit 1 +fi + + +mv -f build/ aim_ui/ +echo "build ui success" +#构建aim-ui包 +python setup.py bdist_wheel +if [ $? -ne 0 ]; then + echo "build aim-ui package failed" + exit 1 +fi + +cp dist/aim_ui*.whl ../../../docker/ +echo "build aim-ui package success" +#取日期作为镜像的tag + +cd ../../../docker/ +date=$(date +%Y%m%d%H%M) +image=172.20.32.187/pipeline-service/aimstack/aim:3.19.0-$date-arm +docker build -t "$image" \ + --build-arg "HTTP_PROXY=http://172.20.32.253:3128" \ + --build-arg "HTTPS_PROXY=http://172.20.32.253:3128" \ + -f Dockerfile.arm . + +if [ $? -ne 0 ]; then + echo "build image failed" + exit 1 +fi + +echo "build image success" +docker push "$image" +if [ $? -ne 0 ]; then + echo "push image failed" + exit 1 +fi + +echo "build image success" + diff --git a/docker/arm-build-image.sh b/docker/arm-build-image.sh new file mode 100755 index 0000000..74a7985 --- /dev/null +++ b/docker/arm-build-image.sh @@ -0,0 +1,27 @@ +#!/bin/bash + + + + + + +date=$(date +%Y%m%d%H%M) +image=172.20.32.187/pipeline-service/aimstack/aim:3.19.0-$date-arm +docker build -t "$image" \ + --build-arg "HTTP_PROXY=http://172.20.32.253:3128" \ + --build-arg "HTTPS_PROXY=http://172.20.32.253:3128" \ + -f Dockerfile.arm . + +if [ $? -ne 0 ]; then + echo "build image failed" + exit 1 +fi + +echo "build image success" +docker push "$image" +if [ $? -ne 0 ]; then + echo "push image failed" + exit 1 +fi + +echo "build image success" diff --git a/docker/arm-build-ui-whl.sh b/docker/arm-build-ui-whl.sh new file mode 100755 index 0000000..34e4c25 --- /dev/null +++ b/docker/arm-build-ui-whl.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +# 切换到项目 UI 目录 +cd ../aim/web/ui || { echo "错误:无法切换到 aim/web/ui 目录"; exit 1; } + +# 配置变量 +IMAGE="172.20.32.187/pipeline-service/aimstack/aim:3.19.0-build-env" +CONTAINER_NAME="aim-ui-builder-$(date +%s)" +HOST_WORKDIR=$(pwd) +PROJECT_ROOT=$(dirname "$(dirname "$HOST_WORKDIR")") # 获取项目根目录 +DOCKER_DIR="$PROJECT_ROOT/docker" # docker 目录绝对路径 +CONTAINER_WORKDIR="/code" + +echo "=== 开始构建 Aim UI 软件包 ===" +echo "使用镜像: $IMAGE" +echo "主机工作目录: $HOST_WORKDIR" +echo "Docker 输出目录: $DOCKER_DIR" +echo "容器工作目录: $CONTAINER_WORKDIR" + +# 确保 docker 目录存在 +mkdir -p "$DOCKER_DIR" + +# 启动容器并执行构建 +docker run --rm \ + --name "$CONTAINER_NAME" \ + -v "$HOST_WORKDIR:$CONTAINER_WORKDIR" \ + -v "$DOCKER_DIR:/docker_out" \ + -w "$CONTAINER_WORKDIR" \ + "$IMAGE" \ + /bin/bash -c "\ + echo '== 执行构建命令 =='; \ + if ! python setup.py bdist_wheel; then \ + echo '构建 Aim UI 软件包失败'; \ + exit 1; \ + fi;" + + +cp dist/aim_ui*.whl ../../../docker/; \ +echo '生成的文件列表:'; \ +ls -lh dist/*.whl; \ +echo '输出到 docker 目录的文件:'; \ +ls -lh ../../../docker/aim_ui*.whl; \ +echo '== 构建完成 ==' + +# 检查构建结果 +if [ $? -eq 0 ]; then + echo "=== Aim UI 软件包构建成功 ===" + echo "生成的 wheel 文件已复制到: $DOCKER_DIR" + echo "文件列表:" + ls -lh "$DOCKER_DIR"/aim_ui*.whl +else + echo "=== 构建失败,请检查错误信息 ===" >&2 + exit 1 +fi diff --git a/docker/arm-build-ui.sh b/docker/arm-build-ui.sh new file mode 100755 index 0000000..c45ca38 --- /dev/null +++ b/docker/arm-build-ui.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +# 进入182服务器,然后切换到conda activate aim-build环境进行构建 +#构建aim 包 + + +echo "build aim package success" + +#编译前端代码 +cd ../aim/web/ui + +if [ -d build ]; then + echo "rm build dir success" + rm -rf build/ +fi + +if [ -d aim_ui/build ]; then + echo "rm aim_ui/build dir success" + rm -rf aim_ui/build/ +fi + +docker run -v $(pwd):/code -w /code \ + -e http_proxy=http://172.20.32.253:3128 -e https_proxy=http://172.20.32.253:3128 \ + ccr.ccs.tencentyun.com/somunslotus/node:18-alpine-arm /bin/sh -c "npm config set registry https://registry.npmmirror.com && npm install --legacy-peer-deps --verbose && export NODE_OPTIONS=--openssl-legacy-provider && npm run build" + +if [ $? -ne 0 ]; then + echo "build ui failed" + exit 1 +fi + + +mv -f build/ aim_ui/ +echo "build ui success" + + diff --git a/docker/arm-build-whl.sh b/docker/arm-build-whl.sh new file mode 100755 index 0000000..4779f45 --- /dev/null +++ b/docker/arm-build-whl.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +#!/bin/bash + +cd ../ +# Aim 软件包构建脚本 +# 使用 Docker 容器环境构建并复制 wheel 文件 + +# 配置变量 +IMAGE="172.20.32.187/pipeline-service/aimstack/aim:3.19.0-build-env" +CONTAINER_NAME="aim-builder-$(date +%s)" +HOST_WORKDIR=$(pwd) +CONTAINER_WORKDIR="/code" + +echo "=== 开始构建 Aim 软件包 ===" +echo "使用镜像: $IMAGE" +echo "主机工作目录: $HOST_WORKDIR" +echo "容器工作目录: $CONTAINER_WORKDIR" + +# 启动容器并执行构建 +docker run --rm \ + --name $CONTAINER_NAME \ + -v "$HOST_WORKDIR:$CONTAINER_WORKDIR" \ + -w $CONTAINER_WORKDIR \ + $IMAGE \ + /bin/bash -c "\ + echo '== 在容器中执行构建命令 =='; \ + python setup.py bdist_wheel; \ + BUILD_RESULT=\$?; \ + if [ \$BUILD_RESULT -ne 0 ]; then \ + echo '构建 Aim 软件包失败'; \ + exit 1; \ + fi; \ + echo '构建成功'; \ + echo '复制 wheel 文件到 docker 目录'; \ + cp dist/aim*.whl docker/; \ + echo '== 构建完成 =='" + +# 检查构建结果 +if [ $? -eq 0 ]; then + echo "=== Aim 软件包构建成功 ===" + echo "生成的 wheel 文件已复制到: $HOST_WORKDIR/docker/" + ls -lh "$HOST_WORKDIR/docker/aim"*.whl +else + echo "=== 构建失败,请检查错误信息 ===" + exit 1 +fi diff --git a/docker/arm-build-whl.sh.bak b/docker/arm-build-whl.sh.bak new file mode 100755 index 0000000..cd9e991 --- /dev/null +++ b/docker/arm-build-whl.sh.bak @@ -0,0 +1,15 @@ +#!/bin/bash + +# 进入182服务器,然后切换到conda activate aim-build环境进行构建 +cd .. +#构建aim 包 +python setup.py bdist_wheel +if [ $? -ne 0 ]; then + echo "build aim package failed" + exit 1 +fi + +cp dist/aim*.whl docker/ + +echo "build aim package success" + diff --git a/docker/build-env-image.sh b/docker/build-env-image.sh new file mode 100755 index 0000000..180ea32 --- /dev/null +++ b/docker/build-env-image.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +# Docker 构建脚本(带代理设置) +# 用法:./build.sh [镜像标签] + +# 设置代理配置 +DOCKERFILE_PATH="." # Dockerfile 所在目录 + + +date=$(date +%Y%m%d%H%M) +image=172.20.32.187/pipeline-service/aimstack/aim:3.19.0-build-env + +# 允许通过参数设置镜像标签 + +# 构建命令 +docker build \ + -t $image \ + -f Dockerfile.build-env \ + "${DOCKERFILE_PATH}" diff --git a/docker/build-image.sh b/docker/build-image.sh old mode 100644 new mode 100755 diff --git a/docker/build-wheels.sh b/docker/build-wheels.sh old mode 100644 new mode 100755 diff --git a/docker/create-docker-image.sh b/docker/create-docker-image.sh old mode 100644 new mode 100755 diff --git a/docker/package-lock.json b/docker/package-lock.json new file mode 100644 index 0000000..5486968 --- /dev/null +++ b/docker/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "code", + "lockfileVersion": 2, + "requires": true, + "packages": {} +} diff --git a/docker/requirements-new.txt b/docker/requirements-new.txt new file mode 100644 index 0000000..acda16a --- /dev/null +++ b/docker/requirements-new.txt @@ -0,0 +1,24 @@ +aimrecords==0.0.7 +aimrocks==0.4.0 +cachetools>=4.0.0 +click>=7.0 +cryptography>=3.0 +filelock<4,>=3.3.0 +numpy<2,>=1.12.0 +psutil>=5.6.7 +RestrictedPython>=5.1 +tqdm>=4.20.0 +aiofiles>=0.5.0 +alembic<2,>=1.5.0 +fastapi<1,>=0.69.0 +jinja2<4,>=2.10.0 +pytz>=2019.1 +SQLAlchemy>=1.4.1 +uvicorn<1,>=0.12.0 +Pillow>=8.0.0 +packaging>=15.0 +python-dateutil +requests +websockets +boto3 +Cython==3.0.0a9 diff --git a/package-lock.json b/package-lock.json index 94e16ab..5486968 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "aim", + "name": "code", "lockfileVersion": 2, "requires": true, "packages": {}