Files
registry/deploy/start.sh
T
cheney e3e5d5bd8f
build-and-deploy / build-and-deploy (push) Successful in 12s
ci: 修正镜像名 registry -> registry-app,锁定脚本 LF 换行
2026-07-16 14:31:10 +08:00

33 lines
1.1 KiB
Bash

#!/usr/bin/env bash
# 部署脚本:在部署机上停止旧容器并启动新版镜像
# 由 CI/CD 通过 ssh 调用,CI/CD 通过 IMAGE_TAG 环境变量传入本次镜像 tag
# 依赖:本机已安装 docker;工作目录 /app/registry 用于持久化 data/
set -euo pipefail
IMAGE_NAME="registry-app"
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}"