Files
AssetPilot/asset_pilot_docker/start.sh

118 lines
3.6 KiB
Bash
Executable File

#!/bin/bash
# Asset Pilot Docker 빠른 시작 스크립트
set -e
echo "🐳 Asset Pilot Docker 설치를 시작합니다..."
echo ""
# 색상 정의
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
# Docker 설치 확인
if ! command -v docker &> /dev/null; then
echo -e "${YELLOW}⚠️ Docker가 설치되어 있지 않습니다.${NC}"
echo ""
echo "Docker를 설치하시겠습니까? (y/n)"
read -r INSTALL_DOCKER
if [ "$INSTALL_DOCKER" = "y" ] || [ "$INSTALL_DOCKER" = "Y" ]; then
echo -e "${BLUE}🐳 Docker 설치 중...${NC}"
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
rm get-docker.sh
echo -e "${GREEN}✓ Docker 설치 완료${NC}"
echo ""
echo -e "${YELLOW}⚠️ 로그아웃 후 다시 로그인하거나 다음 명령을 실행하세요:${NC}"
echo " newgrp docker"
echo ""
echo "그런 다음 이 스크립트를 다시 실행하세요."
exit 0
else
echo -e "${RED}❌ Docker가 필요합니다. 설치 후 다시 시도하세요.${NC}"
exit 1
fi
fi
echo -e "${GREEN}✓ Docker 확인 완료${NC}"
# Docker Compose 확인
if ! docker compose version &> /dev/null; then
echo -e "${YELLOW}⚠️ Docker Compose가 설치되어 있지 않습니다.${NC}"
echo -e "${BLUE}📦 Docker Compose 설치 중...${NC}"
sudo apt-get update
sudo apt-get install -y docker-compose-plugin
echo -e "${GREEN}✓ Docker Compose 설치 완료${NC}"
fi
echo -e "${GREEN}✓ Docker Compose 확인 완료${NC}"
echo ""
# .env 파일 설정
if [ ! -f ".env" ]; then
echo -e "${YELLOW}🔐 데이터베이스 비밀번호를 설정하세요${NC}"
echo -n "비밀번호 입력: "
read -s DB_PASSWORD
echo ""
cat > .env << EOF
# PostgreSQL 데이터베이스 비밀번호
DB_PASSWORD=${DB_PASSWORD}
# 선택적 설정
# FETCH_INTERVAL=5
# DEBUG=False
EOF
chmod 600 .env
echo -e "${GREEN}✓ .env 파일 생성 완료${NC}"
else
echo -e "${YELLOW}⚠️ .env 파일이 이미 존재합니다${NC}"
fi
echo ""
echo -e "${BLUE}🚀 Docker 컨테이너 빌드 및 실행 중...${NC}"
echo ""
# Docker 이미지 빌드 및 컨테이너 시작
docker compose up -d --build
echo ""
echo -e "${BLUE}⏳ 데이터베이스 준비 대기 중...${NC}"
sleep 10
# 데이터베이스 초기화
echo ""
echo -e "${BLUE}🔧 데이터베이스 초기화 중...${NC}"
docker compose exec app python init_db.py
echo ""
echo -e "${GREEN}✅ 설치 완료!${NC}"
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo -e "${GREEN}🌐 접속 정보${NC}"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
# IP 주소 확인
IP_ADDR=$(hostname -I | awk '{print $1}')
echo -e "로컬: ${BLUE}http://localhost:8000${NC}"
echo -e "네트워크: ${BLUE}http://${IP_ADDR}:8000${NC}"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
echo "유용한 명령어:"
echo " docker compose ps # 컨테이너 상태 확인"
echo " docker compose logs -f # 로그 실시간 보기"
echo " docker compose restart # 재시작"
echo " docker compose down # 중지"
echo ""
echo "CSV 데이터 가져오기:"
echo " docker cp user_assets.csv asset_pilot_app:/app/"
echo " docker compose exec app python import_csv.py user_assets.csv"
echo ""