init-byom.sh 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #!/bin/bash
  2. # Colors for output
  3. RED='\033[0;31m'
  4. GREEN='\033[0;32m'
  5. YELLOW='\033[1;33m'
  6. NC='\033[0m' # No Color
  7. # Function to display help menu
  8. show_help() {
  9. echo -e "${GREEN}BYOM Project Management Script${NC}"
  10. echo -e "\nUsage: ./init-byom.sh [command] [args]"
  11. echo -e "\nCommands:"
  12. echo " init [host] Initialize environment files (optional: specify host, default: localhost)"
  13. echo " deploy Deploy to production"
  14. echo " clean Clean up Docker resources"
  15. echo -e "\nExamples:"
  16. echo " ./init-byom.sh init"
  17. echo " ./init-byom.sh up"
  18. }
  19. # Function to initialize environment files
  20. init_env() {
  21. echo -e "${GREEN}Initializing environment files for BYOM project...${NC}\n"
  22. # Create .env for root directory (docker-compose)
  23. cat > .env << EOL
  24. # Docker Compose Environment Variables
  25. DOMAIN=${DOMAIN}
  26. NODE_ENV=production
  27. EOL
  28. echo -e "${GREEN}✓${NC} Created root .env file"
  29. # Create .env for byom-web
  30. mkdir -p byom-web
  31. cat > byom-web/.env << EOL
  32. # Next.js Environment Variables
  33. NEXT_PUBLIC_API_CORE_URL=https://${DOMAIN}/api/v1/core
  34. EOL
  35. echo -e "${GREEN}✓${NC} Created byom-web/.env file"
  36. # Create data directory and initialize app.db for byom-core
  37. mkdir -p byom-core/data
  38. touch byom-core/data/app.db
  39. echo -e "${GREEN}✓${NC} Created byom-core/data/app.db file"
  40. }
  41. # Function to deploy to production
  42. deploy_production() {
  43. echo -e "${GREEN}Deploying to production...${NC}"
  44. # Pull latest changes
  45. git pull origin main
  46. # Build fresh images
  47. docker-compose -f docker-compose.yml build
  48. # Deploy with production configuration
  49. docker-compose -f docker-compose.yml up -d
  50. echo -e "${GREEN}Deployment completed!${NC}"
  51. }
  52. # Function to clean up Docker resources
  53. clean_resources() {
  54. echo -e "${YELLOW}Cleaning up Docker resources...${NC}"
  55. docker-compose down -v --remove-orphans
  56. echo -e "${GREEN}Cleanup completed!${NC}"
  57. }
  58. # Main script logic
  59. case "$1" in
  60. "init")
  61. if [ -n "$2" ]; then
  62. DOMAIN="$2" init_env
  63. else
  64. DOMAIN="localhost" init_env
  65. fi
  66. ;;
  67. "deploy")
  68. deploy_production
  69. ;;
  70. "clean")
  71. clean_resources
  72. ;;
  73. "help"|"--help"|"-h"|"")
  74. show_help
  75. ;;
  76. *)
  77. echo -e "${RED}Invalid command. Use './init-byom.sh help' to see available commands.${NC}"
  78. exit 1
  79. ;;
  80. esac
  81. exit 0