refactor(scripts): 替换部署脚本为docker版本

将原有的直接部署脚本替换为使用docker容器运行的版本,提升部署的一致性和可移植性
This commit is contained in:
zhouyonggao 2025-11-28 16:43:40 +08:00
parent 1d8760e9b5
commit 339fc18fdd
2 changed files with 36 additions and 22 deletions

View File

@ -1,22 +0,0 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
ENV_NAME="${1:-prod}"
export APP_ENV="$ENV_NAME"
cd "$ROOT_DIR"
if [ -f ".env.$ENV_NAME" ]; then
true
elif [ -f "server/.env.$ENV_NAME" ]; then
true
else
echo ".env.$ENV_NAME not found" >&2
exit 1
fi
mkdir -p log
cd "$ROOT_DIR/server"
go build -o "bin/marketing-data-server" "./cmd/server"
cd "$ROOT_DIR"
TARGET="$ROOT_DIR/server/bin/marketing-data-server"
nohup env APP_ENV="$ENV_NAME" "$TARGET" > "$ROOT_DIR/log/server.out" 2>&1 &
echo $! > "$ROOT_DIR/server/bin/server.pid"
echo "started: $TARGET pid $(cat "$ROOT_DIR/server/bin/server.pid")"

36
scripts/deploy_docker.sh Normal file
View File

@ -0,0 +1,36 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
ENV_NAME="${1:-prod}"
IMAGE="marketing-system-data-tool"
TAG="$ENV_NAME"
PORT="${PORT:-8077}"
cd "$ROOT_DIR"
ENV_FILE=".env.$ENV_NAME"
if [ ! -f "$ENV_FILE" ] && [ -f "server/.env.$ENV_NAME" ]; then
ENV_FILE="server/.env.$ENV_NAME"
fi
if [ ! -f "$ENV_FILE" ]; then
echo "$ENV_FILE not found" >&2
exit 1
fi
docker build -t "$IMAGE:$TAG" -f Dockerfile .
mkdir -p log storage/export
CID_NAME="marketing-data-$ENV_NAME"
RUNNING=$(docker inspect -f '{{.State.Running}}' "$CID_NAME" 2>/dev/null || echo false)
if [ "$RUNNING" = "true" ]; then
docker stop "$CID_NAME" >/dev/null 2>&1 || true
fi
if docker ps -a --format '{{.Names}}' | grep -q "^${CID_NAME}$"; then
docker rm "$CID_NAME" >/dev/null 2>&1 || true
fi
docker run -d \
--name "$CID_NAME" \
--restart unless-stopped \
--env APP_ENV="$ENV_NAME" \
--env-file "$ENV_FILE" \
-p "$PORT:8077" \
-v "$ROOT_DIR/storage/export:/app/storage/export" \
-v "$ROOT_DIR/log:/app/log" \
"$IMAGE:$TAG"
echo "container: $CID_NAME image: $IMAGE:$TAG port: $PORT"