Files
homework-backend/deploy.sh
2026-03-28 21:49:58 +01:00

53 lines
1.5 KiB
Bash

# Deployment script for production
#!/bin/bash
set -e
# Configuration
DOCKER_REGISTRY="${DOCKER_REGISTRY:-your-registry.com}"
IMAGE_NAME="${IMAGE_NAME:-homework-backend}"
TAG="${TAG:-latest}"
ENVIRONMENT="${ENVIRONMENT:-production}"
echo "🚀 Deploying Homework Backend to $ENVIRONMENT..."
# Build Docker image
echo "🏗️ Building Docker image..."
docker build -t $DOCKER_REGISTRY/$IMAGE_NAME:$TAG .
# Push to registry
echo "📤 Pushing image to registry..."
docker push $DOCKER_REGISTRY/$IMAGE_NAME:$TAG
# Deploy based on environment
case $ENVIRONMENT in
"staging")
echo "🎭 Deploying to staging..."
docker-compose -f docker-compose.staging.yml down || true
sed -i "s|image:.*|image: $DOCKER_REGISTRY/$IMAGE_NAME:$TAG|g" docker-compose.staging.yml
docker-compose -f docker-compose.staging.yml up -d
;;
"production")
echo "🏭 Deploying to production..."
docker-compose -f docker-compose.prod.yml down || true
sed -i "s|image:.*|image: $DOCKER_REGISTRY/$IMAGE_NAME:$TAG|g" docker-compose.prod.yml
docker-compose -f docker-compose.prod.yml up -d
;;
*)
echo "❌ Unknown environment: $ENVIRONMENT"
echo "Supported environments: staging, production"
exit 1
;;
esac
echo "✅ Deployment completed successfully!"
echo "🔍 Checking service health..."
sleep 10
# Health check
if curl -f http://localhost:8080/health > /dev/null 2>&1; then
echo "💚 Service is healthy!"
else
echo "💔 Service health check failed!"
exit 1
fi