MarketingSystemDataTool/scripts/deploy_docker.sh

50 lines
1.5 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
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
ENV_NAME="${1:-test}"
IMAGE="marketing-system-data-tool"
TAG="$ENV_NAME"
PORT="${PORT:-8077}"
cd "$ROOT_DIR"
ENV_FILE_OVERRIDE="${2:-}"
if [ -n "$ENV_FILE_OVERRIDE" ]; then
ENV_FILE="$ENV_FILE_OVERRIDE"
else
ENV_FILE=".env.$ENV_NAME"
if [ ! -f "$ENV_FILE" ] && [ -f "server/.env.$ENV_NAME" ]; then
ENV_FILE="server/.env.$ENV_NAME"
fi
fi
if [ ! -f "$ENV_FILE" ]; then
echo "$ENV_FILE not found" >&2
echo "请创建 .env.$ENV_NAME 或指定第二个参数为 env 文件路径" >&2
echo "示例server/.env.example" >&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
CONFIG_PATH="$ROOT_DIR/server/config.$ENV_NAME.yaml"
if [ ! -f "$CONFIG_PATH" ]; then
echo "配置文件缺失:$CONFIG_PATH" >&2
exit 1
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" \
-v "$CONFIG_PATH:/app/server/config.$ENV_NAME.yaml:ro" \
"$IMAGE:$TAG"
echo "container: $CID_NAME image: $IMAGE:$TAG port: $PORT"