63 lines
1.7 KiB
Bash
63 lines
1.7 KiB
Bash
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
APP_NAME="apskel-pos"
|
|
|
|
# ─── Deteksi environment dari branch aktif ───────────────────────────────────
|
|
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
|
|
|
|
case "$CURRENT_BRANCH" in
|
|
main)
|
|
ENV_MODE="production"
|
|
PORT="4000"
|
|
;;
|
|
staging)
|
|
ENV_MODE="staging"
|
|
PORT="4001"
|
|
;;
|
|
*)
|
|
echo "❌ Branch '$CURRENT_BRANCH' tidak dikenali untuk deployment."
|
|
echo " Gunakan branch 'main' (production) atau 'staging' (staging)."
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
CONTAINER_NAME="$APP_NAME-$ENV_MODE"
|
|
IMAGE_NAME="$APP_NAME:$ENV_MODE"
|
|
|
|
echo "📦 Environment : $ENV_MODE"
|
|
echo "🌿 Branch : $CURRENT_BRANCH"
|
|
echo "🐳 Container : $CONTAINER_NAME"
|
|
echo "🔌 Port : $PORT"
|
|
echo ""
|
|
|
|
# ─── Pastikan config file ada ─────────────────────────────────────────────────
|
|
CONFIG_FILE="infra/$ENV_MODE.yaml"
|
|
if [ ! -f "$CONFIG_FILE" ]; then
|
|
echo "❌ Config file '$CONFIG_FILE' tidak ditemukan."
|
|
exit 1
|
|
fi
|
|
|
|
echo "🔄 Pulling latest code..."
|
|
git pull
|
|
|
|
echo "🐳 Building Docker image ($ENV_MODE)..."
|
|
docker build --target production -t "$IMAGE_NAME" .
|
|
|
|
echo "🛑 Stopping and removing old container..."
|
|
docker rm -f "$CONTAINER_NAME" 2>/dev/null || true
|
|
|
|
echo "🚀 Running new container..."
|
|
docker run -d --name "$CONTAINER_NAME" \
|
|
-p "$PORT:4000" \
|
|
-e TZ=Asia/Jakarta \
|
|
-e ENV_MODE="$ENV_MODE" \
|
|
-v "$(pwd)/infra":/infra:ro \
|
|
-v "$(pwd)/templates":/templates:ro \
|
|
"$IMAGE_NAME"
|
|
|
|
echo ""
|
|
echo "✅ Deployment $ENV_MODE complete."
|
|
echo " Container : $CONTAINER_NAME"
|
|
echo " Port : $PORT"
|