feat(deploy): add staging environment with dedicated docker compose
- Add docker-compose.staging.yml (app on 127.0.0.1:8081, separate MongoDB on 127.0.0.1:27019, dedicated volume/network) - deploy.sh: select compose file and port per environment (staging 8081, production 8080) - Dockerfile: accept NEXT_PUBLIC_SITE_URL as build arg (inlined at build time for NEXT_PUBLIC_ vars); pass it in both compose files - Add .env.staging.example and .env.production.example
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
# mozdIT Deploy Script — natív docker compose, Dokploy nélkül
|
||||
# Használat: ./deploy.sh [staging|production]
|
||||
# A szerveren fut (git pull + rebuild + indítás).
|
||||
# Compose fájl és port env-enként különbözik.
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
@@ -13,7 +14,15 @@ if [ "$ENV" != "staging" ] && [ "$ENV" != "production" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "🚀 Deploy indítása: [$ENV] környezet"
|
||||
# WHY: staging és production külön compose fájlt és portot használ, hogy
|
||||
# ugyanazon a szerveren ne ütközzenek (prod 8080, staging 8081).
|
||||
COMPOSE_FILE="docker-compose.${ENV}.yml"
|
||||
DEFAULT_PORT=8080
|
||||
if [ "$ENV" = "staging" ]; then
|
||||
DEFAULT_PORT=8081
|
||||
fi
|
||||
|
||||
echo "🚀 Deploy indítása: [$ENV] környezet (${COMPOSE_FILE})"
|
||||
|
||||
# 1. Kód frissítése
|
||||
echo "📦 Kód frissítése a main ágról..."
|
||||
@@ -23,18 +32,18 @@ git pull origin main
|
||||
ENV_FILE=".env.${ENV}"
|
||||
if [ ! -f "$ENV_FILE" ]; then
|
||||
echo "❌ Hiba: $ENV_FILE fájl nem található."
|
||||
echo " Másold le a .env.example fájlt $ENV_FILE néven, és töltsd ki."
|
||||
echo " Másold le a .env.staging.example / .env.production.example fájlt $ENV_FILE néven, és töltsd ki."
|
||||
exit 1
|
||||
fi
|
||||
echo "🔑 Környezeti változók betöltése ($ENV_FILE)..."
|
||||
|
||||
# 3. Docker konténerek újraépítése és indítása
|
||||
echo "🐳 Build és indítás..."
|
||||
docker compose --env-file "$ENV_FILE" -f docker-compose.prod.yml up --build -d
|
||||
docker compose --env-file "$ENV_FILE" -f "$COMPOSE_FILE" up --build -d
|
||||
|
||||
# 4. Healthcheck
|
||||
echo "⏳ Healthcheck (max 60s)..."
|
||||
HEALTH_URL="http://localhost:${APP_PORT:-8080}/api/health"
|
||||
HEALTH_URL="http://localhost:${APP_PORT:-$DEFAULT_PORT}/api/health"
|
||||
for i in $(seq 1 30); do
|
||||
if curl -sf "$HEALTH_URL" > /dev/null 2>&1; then
|
||||
echo "✅ Healthcheck OK: $HEALTH_URL"
|
||||
@@ -45,5 +54,5 @@ for i in $(seq 1 30); do
|
||||
done
|
||||
|
||||
echo "❌ Healthcheck sikertelen: $HEALTH_URL"
|
||||
docker compose -f docker-compose.prod.yml logs app --tail 50
|
||||
docker compose -f "$COMPOSE_FILE" logs app --tail 50
|
||||
exit 1
|
||||
|
||||
Reference in New Issue
Block a user