embed-bge-m3/build.sh

54 lines
1.2 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
IMAGE_NAME="bge-m3-openai-api"
CONTAINER_NAME="bge-m3-openai-api"
HOST_PORT=8001
MODEL_DIR="$(pwd)/model/bge-m3"
FLAG_DIR="$(pwd)/FlagEmbedding"
echo "==> 1. 停止并删除旧容器"
containers=$(docker ps -a --filter "ancestor=${IMAGE_NAME}" -q)
if [ -n "$containers" ]; then
echo "Stopping: $containers"
docker stop $containers
echo "Removing: $containers"
docker rm $containers
else
echo "No existing containers for image ${IMAGE_NAME}"
fi
echo
echo "==> 2. 删除旧镜像"
image_ids=$(docker images -q "${IMAGE_NAME}")
if [ -n "$image_ids" ]; then
echo "Removing image IDs: $image_ids"
docker rmi -f $image_ids
else
echo "No existing images named ${IMAGE_NAME}"
fi
echo
echo "==> 3. 更新 FlagEmbedding 源码(如果是 git 仓库)"
if [ -d "${FLAG_DIR}/.git" ]; then
git -C "${FLAG_DIR}" pull
else
echo "${FLAG_DIR} is not a git repo, skipping 'git pull'"
fi
echo
echo "==> 4. 构建新镜像"
docker build -t "${IMAGE_NAME}" .
echo
echo "==> 5. 启动新容器"
docker run -d \
--name "${CONTAINER_NAME}" \
-p "${HOST_PORT}:${HOST_PORT}" \
-v "${MODEL_DIR}:/app/model/bge-m3" \
"${IMAGE_NAME}"
echo
echo "✅ All done. Container '${CONTAINER_NAME}' is running on port ${HOST_PORT}."