diff --git a/server/compose.yml b/server/compose.yml index 6ac8fad..771dade 100644 --- a/server/compose.yml +++ b/server/compose.yml @@ -19,8 +19,10 @@ services: container_name: app-blue ports: - '8080:8080' + - '8082:8082' app-green: <<: *app container_name: app-green ports: - '8081:8080' + - '8083:8082' diff --git a/server/scripts/deploy.sh b/server/scripts/deploy.sh index eca651c..9e9daff 100644 --- a/server/scripts/deploy.sh +++ b/server/scripts/deploy.sh @@ -3,22 +3,25 @@ NGINX_CONFIG_PATH="/etc/nginx/sites-available/api.fluffy.run" HEALTH_CHECK_ATTEMPTS=5 HEALTH_CHECK_DELAY=3 +BLUE_HEALTH_CHECK_URL="http://localhost:8082/actuator/health" +GREEN_HEALTH_CHECK_URL="http://localhost:8083/actuator/health" health_check() { - local endpoint=$1 + local target_url=$1 + for i in $(seq 1 $HEALTH_CHECK_ATTEMPTS); do - echo "Health check attempt ($i/$HEALTH_CHECK_ATTEMPTS) for $endpoint" - response=$(curl -s -o /dev/null -w "%{http_code}" "$endpoint") + echo "Health check attempt ($i/$HEALTH_CHECK_ATTEMPTS) for $target_url" + response=$(curl -s -o /dev/null -w "%{http_code}" "$target_url") if [ "$response" -eq 200 ]; then - echo "Health check passed for $endpoint" + echo "Health check passed for $target_url" return 0 fi sleep $HEALTH_CHECK_DELAY done - echo "Health check failed for $endpoint" + echo "Health check failed for $target_url" return 1 } @@ -26,15 +29,14 @@ switch_container() { local prev_container=$1 local next_container=$2 local next_container_port=$3 + local health_check_url=$4 echo "Starting $next_container..." docker compose -f compose.yml up "$next_container" -d - local health_check_url="http://app-blue:8082/actuator/health" - if ! health_check "$health_check_url"; then echo "Health check failed, rolling back..." - docker compose -f compose.yml down "$next_container" + docker compose -f compose.yml stop "$next_container" return 1 fi @@ -42,19 +44,19 @@ switch_container() { echo "Reloading Nginx configuration..." if ! sudo nginx -s reload; then - echo "Failed to reload Nginx" + echo "Failed to reload Nginx: $(sudo nginx -t 2>&1)" return 1 fi - echo "$next_container is now live!" + echo "$next_container is now live and accepting requests!" } IS_GREEN=$(docker container ps | grep app-green) if [ -z "$IS_GREEN" ]; then echo "### BLUE >> GREEN ###" - switch_container "app-blue" "app-green" "8081" + switch_container "app-blue" "app-green" "8081" "$GREEN_HEALTH_CHECK_URL" else echo "### GREEN >> BLUE ###" - switch_container "app-green" "app-blue" "8080" + switch_container "app-green" "app-blue" "8080" "$BLUE_HEALTH_CHECK_URL" fi