registry/deploy/start.sh
2026-07-16 11:31:34 +08:00

33 lines
1.1 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
# 部署脚本:在部署机上停止旧容器并启动新版镜像
# 由 CI/CD 通过 ssh 调用CI/CD 通过 IMAGE_TAG 环境变量传入本次镜像 tag
# 依赖:本机已安装 docker工作目录 /app/registry 用于持久化 data/
set -euo pipefail
IMAGE_NAME="registry"
IMAGE_TAG="${IMAGE_TAG:-latest}"
CONTAINER_NAME="registry"
HOST_PORT="${HOST_PORT:-8008}"
APP_DIR="$(cd "$(dirname "$0")" && pwd)"
DATA_DIR="${APP_DIR}/data"
echo "[start.sh] 使用镜像:${IMAGE_NAME}:${IMAGE_TAG}"
mkdir -p "${DATA_DIR}/configs"
# 停止并清理旧容器(若不存在则忽略)
if docker ps -a --format '{{.Names}}' | grep -qx "${CONTAINER_NAME}"; then
echo "[start.sh] 停止并删除旧容器 ${CONTAINER_NAME}"
docker rm -f "${CONTAINER_NAME}" >/dev/null
fi
# 启动新容器:数据目录挂载到宿主机以持久化
echo "[start.sh] 启动新容器"
docker run -d \
--name "${CONTAINER_NAME}" \
--restart unless-stopped \
-p "${HOST_PORT}:3000" \
-v "${DATA_DIR}:/app/data" \
"${IMAGE_NAME}:${IMAGE_TAG}"
echo "[start.sh] 部署完成http://localhost:${HOST_PORT}"