init
This commit is contained in:
Executable
+199
@@ -0,0 +1,199 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Docker build script for apskel-pos-backend
|
||||
|
||||
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
|
||||
|
||||
# Functions
|
||||
log_info() {
|
||||
echo -e "${BLUE}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
log_success() {
|
||||
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
||||
}
|
||||
|
||||
log_warning() {
|
||||
echo -e "${YELLOW}[WARNING]${NC} $1"
|
||||
}
|
||||
|
||||
log_error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1"
|
||||
}
|
||||
|
||||
# Help function
|
||||
show_help() {
|
||||
echo "Usage: $0 [OPTION]"
|
||||
echo "Build and manage Docker containers for apskel-pos-backend"
|
||||
echo ""
|
||||
echo "Options:"
|
||||
echo " build Build the Docker image"
|
||||
echo " run Run the production container"
|
||||
echo " dev Run development environment with live reload"
|
||||
echo " migrate Run database migrations"
|
||||
echo " stop Stop all containers"
|
||||
echo " clean Remove containers and images"
|
||||
echo " logs Show container logs"
|
||||
echo " help Show this help message"
|
||||
echo ""
|
||||
}
|
||||
|
||||
# Build Docker image
|
||||
build_image() {
|
||||
log_info "Building apskel-pos-backend Docker image..."
|
||||
|
||||
# Build the image with production target
|
||||
docker build \
|
||||
--target production \
|
||||
-t apskel-pos-backend:latest \
|
||||
-t apskel-pos-backend:$(date +%Y%m%d-%H%M%S) \
|
||||
.
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
log_success "Docker image built successfully!"
|
||||
else
|
||||
log_error "Failed to build Docker image"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Run production container
|
||||
run_container() {
|
||||
log_info "Starting production containers..."
|
||||
|
||||
# Start the containers
|
||||
docker-compose up -d
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
log_success "Containers started successfully!"
|
||||
log_info "Backend API available at: http://localhost:3300"
|
||||
log_info "Database available at: localhost:5432"
|
||||
log_info "Redis available at: localhost:6379"
|
||||
log_info ""
|
||||
log_info "Use 'docker-compose logs -f backend' to view logs"
|
||||
else
|
||||
log_error "Failed to start containers"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Run development environment
|
||||
run_dev() {
|
||||
log_info "Starting development environment..."
|
||||
|
||||
# Start development containers
|
||||
docker-compose --profile dev up -d
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
log_success "Development environment started!"
|
||||
log_info "Backend API (dev) available at: http://localhost:3001"
|
||||
log_info "Backend API (prod) available at: http://localhost:3300"
|
||||
log_info ""
|
||||
log_info "Use 'docker-compose logs -f backend-dev' to view development logs"
|
||||
else
|
||||
log_error "Failed to start development environment"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Run migrations
|
||||
run_migrations() {
|
||||
log_info "Running database migrations..."
|
||||
|
||||
# Ensure database is running
|
||||
docker-compose up -d postgres
|
||||
sleep 5
|
||||
|
||||
# Run migrations
|
||||
docker-compose --profile migrate up migrate
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
log_success "Migrations completed successfully!"
|
||||
else
|
||||
log_warning "Migrations may have failed or are already up to date"
|
||||
fi
|
||||
}
|
||||
|
||||
# Stop containers
|
||||
stop_containers() {
|
||||
log_info "Stopping all containers..."
|
||||
|
||||
docker-compose down
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
log_success "All containers stopped"
|
||||
else
|
||||
log_error "Failed to stop containers"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Clean up containers and images
|
||||
clean_up() {
|
||||
log_warning "This will remove all containers, networks, and images related to this project"
|
||||
read -p "Are you sure? (y/N): " -n 1 -r
|
||||
echo
|
||||
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
log_info "Cleaning up containers and images..."
|
||||
|
||||
# Stop and remove containers
|
||||
docker-compose down -v --remove-orphans
|
||||
|
||||
# Remove images
|
||||
docker rmi apskel-pos-backend:latest || true
|
||||
docker rmi $(docker images apskel-pos-backend -q) || true
|
||||
|
||||
# Remove unused networks and volumes
|
||||
docker network prune -f || true
|
||||
docker volume prune -f || true
|
||||
|
||||
log_success "Cleanup completed"
|
||||
else
|
||||
log_info "Cleanup cancelled"
|
||||
fi
|
||||
}
|
||||
|
||||
# Show logs
|
||||
show_logs() {
|
||||
log_info "Showing container logs..."
|
||||
|
||||
# Show logs for all services
|
||||
docker-compose logs -f
|
||||
}
|
||||
|
||||
# Main script logic
|
||||
case "${1:-help}" in
|
||||
"build")
|
||||
build_image
|
||||
;;
|
||||
"run")
|
||||
build_image
|
||||
run_container
|
||||
;;
|
||||
"dev")
|
||||
run_dev
|
||||
;;
|
||||
"migrate")
|
||||
run_migrations
|
||||
;;
|
||||
"stop")
|
||||
stop_containers
|
||||
;;
|
||||
"clean")
|
||||
clean_up
|
||||
;;
|
||||
"logs")
|
||||
show_logs
|
||||
;;
|
||||
"help"|*)
|
||||
show_help
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user