feat: 新增生产部署脚本
This commit is contained in:
49
deploy.sh
Executable file
49
deploy.sh
Executable file
@@ -0,0 +1,49 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
cd "$PROJECT_ROOT"
|
||||
|
||||
TARGET_BRANCH="${1:-$(git rev-parse --abbrev-ref HEAD)}"
|
||||
|
||||
echo "==> Deploy directory: $PROJECT_ROOT"
|
||||
echo "==> Target branch: $TARGET_BRANCH"
|
||||
|
||||
if [[ -n "$(git status --porcelain)" ]]; then
|
||||
echo "Error: working tree is not clean."
|
||||
echo "Please commit/stash local changes before deployment."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "==> Fetching remote updates..."
|
||||
git fetch --all --prune
|
||||
|
||||
echo "==> Checking out branch: $TARGET_BRANCH"
|
||||
git checkout "$TARGET_BRANCH"
|
||||
|
||||
echo "==> Pulling latest code from origin/$TARGET_BRANCH"
|
||||
git pull --ff-only origin "$TARGET_BRANCH"
|
||||
|
||||
if [[ ! -f ".env" && -f ".env.example" ]]; then
|
||||
cp ".env.example" ".env"
|
||||
echo "==> Created .env from .env.example"
|
||||
fi
|
||||
|
||||
if docker compose version >/dev/null 2>&1; then
|
||||
COMPOSE_CMD="docker compose"
|
||||
elif command -v docker-compose >/dev/null 2>&1; then
|
||||
COMPOSE_CMD="docker-compose"
|
||||
else
|
||||
COMPOSE_CMD=""
|
||||
fi
|
||||
|
||||
if [[ -n "$COMPOSE_CMD" ]]; then
|
||||
echo "==> Restarting service with $COMPOSE_CMD"
|
||||
$COMPOSE_CMD down
|
||||
$COMPOSE_CMD up -d --build
|
||||
echo "==> Deployment finished. Service: http://localhost:18000"
|
||||
else
|
||||
echo "==> Docker Compose not found, fallback to ./start.sh"
|
||||
chmod +x ./start.sh
|
||||
./start.sh
|
||||
fi
|
||||
Reference in New Issue
Block a user