54 lines
1.2 KiB
Bash
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}."
|
|
|