add docker for server demo
This commit is contained in:
188
scripts/setup-local.sh
Executable file
188
scripts/setup-local.sh
Executable file
@@ -0,0 +1,188 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Local Development Setup Script for Sibedas PBG Web
|
||||
# This script sets up the local development environment
|
||||
|
||||
set -e
|
||||
|
||||
# Colors for output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
echo -e "${BLUE}=== Local Development Setup untuk Sibedas PBG Web ===${NC}"
|
||||
echo ""
|
||||
|
||||
# Function to check prerequisites
|
||||
check_prerequisites() {
|
||||
echo -e "${BLUE}Checking prerequisites...${NC}"
|
||||
|
||||
# Check if Docker is installed
|
||||
if ! command -v docker &> /dev/null; then
|
||||
echo -e "${RED}Error: Docker is not installed${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check if Docker Compose is installed
|
||||
if ! command -v docker-compose &> /dev/null; then
|
||||
echo -e "${RED}Error: Docker Compose is not installed${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check if .env file exists
|
||||
if [ ! -f .env ]; then
|
||||
echo -e "${YELLOW}Warning: .env file not found${NC}"
|
||||
echo -e "${YELLOW}Creating from example...${NC}"
|
||||
if [ -f env.production.example ]; then
|
||||
cp env.production.example .env
|
||||
else
|
||||
echo -e "${RED}Error: No environment example file found${NC}"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo -e "${GREEN}Prerequisites check passed!${NC}"
|
||||
}
|
||||
|
||||
# Function to setup environment for local development
|
||||
setup_environment() {
|
||||
echo -e "${BLUE}Setting up environment for local development...${NC}"
|
||||
|
||||
# Update .env for local development
|
||||
sed -i 's/APP_ENV=production/APP_ENV=local/g' .env
|
||||
sed -i 's/APP_DEBUG=false/APP_DEBUG=true/g' .env
|
||||
sed -i 's/APP_URL=https:\/\/sibedas.yourdomain.com/APP_URL=http:\/\/localhost:8000/g' .env
|
||||
sed -i 's/VITE_APP_URL=https:\/\/sibedas.yourdomain.com/VITE_APP_URL=http:\/\/localhost:8000/g' .env
|
||||
|
||||
# Update database settings for local
|
||||
sed -i 's/DB_USERNAME=sibedas_user/DB_USERNAME=root/g' .env
|
||||
sed -i 's/DB_PASSWORD=your_secure_database_password/DB_PASSWORD=root/g' .env
|
||||
sed -i 's/MYSQL_ROOT_PASSWORD=your_secure_root_password/MYSQL_ROOT_PASSWORD=root/g' .env
|
||||
|
||||
echo -e "${GREEN}Environment configured for local development!${NC}"
|
||||
}
|
||||
|
||||
# Function to start local containers
|
||||
start_containers() {
|
||||
echo -e "${BLUE}Starting local development containers...${NC}"
|
||||
|
||||
# Stop any existing containers
|
||||
docker-compose -f docker-compose.local.yml down --remove-orphans || true
|
||||
|
||||
# Build and start containers
|
||||
docker-compose -f docker-compose.local.yml up -d --build
|
||||
|
||||
# Wait for containers to be ready
|
||||
echo -e "${YELLOW}Waiting for containers to be ready...${NC}"
|
||||
sleep 30
|
||||
|
||||
# Check container status
|
||||
if docker-compose -f docker-compose.local.yml ps | grep -q "Up"; then
|
||||
echo -e "${GREEN}Containers started successfully!${NC}"
|
||||
else
|
||||
echo -e "${RED}Error: Some containers failed to start${NC}"
|
||||
docker-compose -f docker-compose.local.yml logs
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to setup database
|
||||
setup_database() {
|
||||
echo -e "${BLUE}Setting up database...${NC}"
|
||||
|
||||
# Wait for database to be ready
|
||||
echo -e "${YELLOW}Waiting for database to be ready...${NC}"
|
||||
sleep 10
|
||||
|
||||
# Check if database import was successful
|
||||
if docker exec sibedas_db_local mysql -uroot -proot sibedas -e "SHOW TABLES LIKE 'users';" 2>/dev/null | grep -q "users"; then
|
||||
echo -e "${GREEN}Database imported successfully from sibedas.sql!${NC}"
|
||||
else
|
||||
echo -e "${YELLOW}Warning: Database import verification failed${NC}"
|
||||
echo -e "${YELLOW}You may need to manually import the database${NC}"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to run post-setup tasks
|
||||
post_setup() {
|
||||
echo -e "${BLUE}Running post-setup tasks...${NC}"
|
||||
|
||||
# Clear Laravel caches
|
||||
echo -e "${YELLOW}Clearing Laravel caches...${NC}"
|
||||
docker exec sibedas_app_local php artisan config:clear || true
|
||||
docker exec sibedas_app_local php artisan route:clear || true
|
||||
docker exec sibedas_app_local php artisan view:clear || true
|
||||
docker exec sibedas_app_local php artisan cache:clear || true
|
||||
|
||||
# Optimize Laravel
|
||||
echo -e "${YELLOW}Optimizing Laravel...${NC}"
|
||||
docker exec sibedas_app_local php artisan optimize:clear || true
|
||||
|
||||
# Create storage link
|
||||
echo -e "${YELLOW}Creating storage link...${NC}"
|
||||
docker exec sibedas_app_local php artisan storage:link || true
|
||||
|
||||
echo -e "${GREEN}Post-setup tasks completed!${NC}"
|
||||
}
|
||||
|
||||
# Function to show status
|
||||
show_status() {
|
||||
echo -e "${BLUE}=== Local Development Status ===${NC}"
|
||||
|
||||
echo -e "${YELLOW}Container Status:${NC}"
|
||||
docker-compose -f docker-compose.local.yml ps
|
||||
|
||||
echo -e "${YELLOW}Application URLs:${NC}"
|
||||
echo -e " Main App: ${GREEN}http://localhost:8000${NC}"
|
||||
echo -e " Vite Dev: ${GREEN}http://localhost:5173${NC}"
|
||||
|
||||
echo -e "${YELLOW}Useful Commands:${NC}"
|
||||
echo -e " View logs: ${GREEN}docker-compose -f docker-compose.local.yml logs -f [service]${NC}"
|
||||
echo -e " Execute commands: ${GREEN}docker-compose -f docker-compose.local.yml exec app php artisan [command]${NC}"
|
||||
echo -e " Stop services: ${GREEN}docker-compose -f docker-compose.local.yml down${NC}"
|
||||
echo -e " Restart services: ${GREEN}docker-compose -f docker-compose.local.yml restart${NC}"
|
||||
}
|
||||
|
||||
# Function to show usage
|
||||
show_usage() {
|
||||
echo "Usage: $0 {setup|status|help}"
|
||||
echo ""
|
||||
echo "Commands:"
|
||||
echo " setup - Setup local development environment (default)"
|
||||
echo " status - Show current status"
|
||||
echo " help - Show this help message"
|
||||
echo ""
|
||||
echo "Examples:"
|
||||
echo " $0 setup"
|
||||
echo " $0 status"
|
||||
}
|
||||
|
||||
# Main script logic
|
||||
case "${1:-setup}" in
|
||||
"setup")
|
||||
check_prerequisites
|
||||
setup_environment
|
||||
start_containers
|
||||
setup_database
|
||||
post_setup
|
||||
show_status
|
||||
;;
|
||||
"status")
|
||||
show_status
|
||||
;;
|
||||
"help"|"-h"|"--help")
|
||||
show_usage
|
||||
;;
|
||||
*)
|
||||
echo -e "${RED}Unknown command: $1${NC}"
|
||||
echo ""
|
||||
show_usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
echo ""
|
||||
echo -e "${GREEN}Local development setup completed successfully!${NC}"
|
||||
echo -e "${BLUE}You can now access your application at: http://localhost:8000${NC}"
|
||||
Reference in New Issue
Block a user