#!/bin/bash # 워커 자동 시작 스크립트 echo "=== 이미지 처리 워커 시작 ===" # 기본 설정 (원격 실행용) # 메인서버 IP를 실제 IP로 변경하세요 MAIN_SERVER_IP=${MAIN_SERVER_IP:-"localhost"} # 원격지에서는 메인서버의 실제 IP 설정 필요 REDIS_URL=${REDIS_URL:-"redis://${MAIN_SERVER_IP}:6379/0"} MAIN_SERVER=${MAIN_SERVER:-"$MAIN_SERVER_IP"} CONCURRENCY=${CONCURRENCY:-"2"} WORKER_MODE=${WORKER_MODE:-"local"} WORKER_NAME=${WORKER_NAME:-"worker-$(hostname)-$$"} echo "메인서버 IP: $MAIN_SERVER_IP" echo "Redis URL: $REDIS_URL" echo "메인 서버: $MAIN_SERVER" echo "동시 처리 수: $CONCURRENCY" echo "실행 모드: $WORKER_MODE" echo "워커 이름: $WORKER_NAME" # 원격 실행인지 확인 if [ "$MAIN_SERVER_IP" = "localhost" ]; then echo "" echo "⚠️ 경고: 원격지에서 실행하는 경우 메인서버 IP를 설정하세요!" echo "사용법: MAIN_SERVER_IP=메인서버IP ./start_worker.sh" echo "예시: MAIN_SERVER_IP=192.168.1.100 ./start_worker.sh" echo "" fi case $WORKER_MODE in "docker") echo "Docker 모드로 워커 시작..." docker-compose down docker-compose build docker-compose up -d echo "워커 컨테이너 시작 완료!" docker-compose logs -f worker ;; "local") echo "로컬 모드로 워커 시작..." # 가상환경 활성화 확인 if [[ "$VIRTUAL_ENV" != "" ]]; then echo "가상환경 활성화됨: $VIRTUAL_ENV" else echo "가상환경을 활성화하세요: source bin/activate" if [ -f "bin/activate" ]; then echo "자동으로 가상환경 활성화 중..." source bin/activate else echo "❌ 가상환경을 찾을 수 없습니다. 먼저 설정하세요." exit 1 fi fi python worker.py --concurrency $CONCURRENCY --redis-url $REDIS_URL --main-server $MAIN_SERVER --worker-name $WORKER_NAME ;; "remote") echo "원격 모드로 워커 시작..." # 원격 모드는 local과 동일하지만 기본 설정이 원격용 if [[ "$VIRTUAL_ENV" != "" ]]; then echo "가상환경 활성화됨: $VIRTUAL_ENV" else if [ -f "bin/activate" ]; then echo "자동으로 가상환경 활성화 중..." source bin/activate else echo "❌ 가상환경을 찾을 수 없습니다." exit 1 fi fi python worker.py --concurrency $CONCURRENCY --redis-url $REDIS_URL --main-server $MAIN_SERVER --worker-name $WORKER_NAME ;; *) echo "사용법: WORKER_MODE=docker|local|remote ./start_worker.sh" echo "" echo "환경 변수:" echo " MAIN_SERVER_IP: 메인서버 IP 주소 (필수 - 원격 실행시)" echo " REDIS_URL: Redis 서버 URL" echo " MAIN_SERVER: 메인 서버 주소" echo " CONCURRENCY: 동시 처리 수 (기본값: 2)" echo " WORKER_NAME: 워커 식별명" echo "" echo "원격 실행 예시:" echo " MAIN_SERVER_IP=192.168.1.100 WORKER_MODE=remote ./start_worker.sh" echo " MAIN_SERVER_IP=10.0.0.50 CONCURRENCY=4 ./start_worker.sh" echo "" exit 1 ;; esac