38 lines
918 B
Bash
Executable File
38 lines
918 B
Bash
Executable File
#!/usr/bin/env sh
|
|
set -eu
|
|
|
|
PROJECT_ROOT=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
|
|
cd "$PROJECT_ROOT"
|
|
|
|
if [ ! -f ".env" ] && [ -f ".env.example" ]; then
|
|
echo "未找到 .env,先从 .env.example 复制一份:"
|
|
echo " cp .env.example .env"
|
|
exit 1
|
|
fi
|
|
|
|
DATA_DIR_VALUE=$(grep '^DATA_DIR=' .env 2>/dev/null | tail -n 1 | cut -d '=' -f 2- || true)
|
|
DATA_DIR=${DATA_DIR_VALUE:-./data}
|
|
|
|
mkdir -p "$DATA_DIR"
|
|
|
|
echo "[1/4] 拉取最新代码(如果当前目录是 git 仓库)"
|
|
if [ -d ".git" ]; then
|
|
git pull --ff-only
|
|
else
|
|
echo "跳过:当前目录不是 git 仓库"
|
|
fi
|
|
|
|
echo "[2/4] 构建并更新容器"
|
|
docker compose up -d --build
|
|
|
|
echo "[3/4] 当前容器状态"
|
|
docker compose ps
|
|
|
|
echo "[4/4] 最近日志"
|
|
docker compose logs --tail=50 web
|
|
|
|
echo
|
|
echo "部署完成。应用默认地址:"
|
|
echo " http://localhost:$(grep '^PORT=' .env 2>/dev/null | tail -n 1 | cut -d '=' -f 2- || echo 10000)"
|
|
|