mirror of
https://github.com/Dvorinka/Trackeep.git
synced 2026-06-04 12:32:58 +00:00
feat(frontend): enhance API credentials system and build configuration
Add real API support in demo mode with credential checking, implement build-time version injection from package.json, and refactor update checking with 24-hour caching. Migrate landing page from Vue to Astro with comprehensive UI components including Hero, Features, Benefits, and Tech Stack sections. Update CI/CD workflow with expanded cache paths and security scanner version pinned.
This commit is contained in:
Executable
+228
@@ -0,0 +1,228 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Trackkeep Landing Page - Docker Deployment Script
|
||||
|
||||
set -e
|
||||
|
||||
# Colors for output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Configuration
|
||||
IMAGE_NAME="trackeep-landing"
|
||||
CONTAINER_NAME="trackeep-landing-container"
|
||||
PORT="8080"
|
||||
|
||||
# Functions
|
||||
log_info() {
|
||||
echo -e "${GREEN}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
log_warn() {
|
||||
echo -e "${YELLOW}[WARN]${NC} $1"
|
||||
}
|
||||
|
||||
log_error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1"
|
||||
}
|
||||
|
||||
# Check if Docker is installed
|
||||
check_docker() {
|
||||
if ! command -v docker &> /dev/null; then
|
||||
log_error "Docker is not installed. Please install Docker first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! command -v docker-compose &> /dev/null; then
|
||||
log_error "Docker Compose is not installed. Please install Docker Compose first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log_info "Docker and Docker Compose are installed"
|
||||
}
|
||||
|
||||
# Build the Docker image
|
||||
build_image() {
|
||||
log_info "Building Docker image..."
|
||||
docker build -t $IMAGE_NAME .
|
||||
log_info "Docker image built successfully"
|
||||
}
|
||||
|
||||
# Run the container
|
||||
run_container() {
|
||||
log_info "Starting container..."
|
||||
|
||||
# Stop and remove existing container if it exists
|
||||
if docker ps -a --format 'table {{.Names}}' | grep -q "^$CONTAINER_NAME$"; then
|
||||
log_warn "Container $CONTAINER_NAME already exists. Stopping and removing..."
|
||||
docker stop $CONTAINER_NAME 2>/dev/null || true
|
||||
docker rm $CONTAINER_NAME 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# Run new container
|
||||
docker run -d \
|
||||
--name $CONTAINER_NAME \
|
||||
-p $PORT:80 \
|
||||
--restart unless-stopped \
|
||||
$IMAGE_NAME
|
||||
|
||||
log_info "Container started successfully"
|
||||
log_info "Landing page is available at: http://localhost:$PORT"
|
||||
}
|
||||
|
||||
# Health check
|
||||
health_check() {
|
||||
log_info "Performing health check..."
|
||||
|
||||
# Wait for container to start
|
||||
sleep 5
|
||||
|
||||
# Check if container is running
|
||||
if ! docker ps --format 'table {{.Names}}' | grep -q "^$CONTAINER_NAME$"; then
|
||||
log_error "Container is not running"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check health endpoint
|
||||
if curl -f http://localhost:$PORT/health > /dev/null 2>&1; then
|
||||
log_info "Health check passed"
|
||||
else
|
||||
log_warn "Health check failed, but container is running"
|
||||
fi
|
||||
}
|
||||
|
||||
# Show logs
|
||||
show_logs() {
|
||||
log_info "Showing container logs (press Ctrl+C to exit)..."
|
||||
docker logs -f $CONTAINER_NAME
|
||||
}
|
||||
|
||||
# Stop container
|
||||
stop_container() {
|
||||
log_info "Stopping container..."
|
||||
docker stop $CONTAINER_NAME 2>/dev/null || true
|
||||
docker rm $CONTAINER_NAME 2>/dev/null || true
|
||||
log_info "Container stopped and removed"
|
||||
}
|
||||
|
||||
# Clean up
|
||||
cleanup() {
|
||||
log_info "Cleaning up..."
|
||||
|
||||
# Stop and remove container
|
||||
stop_container
|
||||
|
||||
# Remove image
|
||||
if docker images --format 'table {{.Repository}}' | grep -q "^$IMAGE_NAME$"; then
|
||||
docker rmi $IMAGE_NAME 2>/dev/null || true
|
||||
log_info "Docker image removed"
|
||||
fi
|
||||
|
||||
log_info "Cleanup completed"
|
||||
}
|
||||
|
||||
# Deploy with Docker Compose
|
||||
deploy_compose() {
|
||||
log_info "Deploying with Docker Compose..."
|
||||
|
||||
# Stop existing services
|
||||
docker-compose down 2>/dev/null || true
|
||||
|
||||
# Build and start services
|
||||
docker-compose up -d --build
|
||||
|
||||
log_info "Deployment completed"
|
||||
log_info "Landing page is available at: http://localhost:8080"
|
||||
}
|
||||
|
||||
# Deploy with SSL (Traefik)
|
||||
deploy_ssl() {
|
||||
log_info "Deploying with SSL (Traefik)..."
|
||||
|
||||
# Create letsencrypt directory if it doesn't exist
|
||||
mkdir -p letsencrypt
|
||||
|
||||
# Stop existing services
|
||||
docker-compose --profile ssl down 2>/dev/null || true
|
||||
|
||||
# Build and start services with SSL profile
|
||||
docker-compose --profile ssl up -d --build
|
||||
|
||||
log_info "SSL deployment completed"
|
||||
log_info "Landing page is available at: https://trackeep.org"
|
||||
log_info "Traefik dashboard: http://localhost:8081"
|
||||
}
|
||||
|
||||
# Show help
|
||||
show_help() {
|
||||
echo "Trackkeep Landing Page - Docker Deployment Script"
|
||||
echo ""
|
||||
echo "Usage: $0 [COMMAND]"
|
||||
echo ""
|
||||
echo "Commands:"
|
||||
echo " build Build Docker image"
|
||||
echo " run Run container"
|
||||
echo " deploy Build and run container"
|
||||
echo " compose Deploy with Docker Compose"
|
||||
echo " ssl Deploy with SSL (Traefik)"
|
||||
echo " logs Show container logs"
|
||||
echo " health Perform health check"
|
||||
echo " stop Stop container"
|
||||
echo " cleanup Stop container and remove image"
|
||||
echo " help Show this help message"
|
||||
echo ""
|
||||
echo "Examples:"
|
||||
echo " $0 deploy # Build and run container"
|
||||
echo " $0 compose # Deploy with Docker Compose"
|
||||
echo " $0 ssl # Deploy with SSL"
|
||||
echo " $0 logs # Show logs"
|
||||
echo " $0 cleanup # Clean up everything"
|
||||
}
|
||||
|
||||
# Main script
|
||||
main() {
|
||||
case "${1:-help}" in
|
||||
"build")
|
||||
check_docker
|
||||
build_image
|
||||
;;
|
||||
"run")
|
||||
check_docker
|
||||
run_container
|
||||
;;
|
||||
"deploy")
|
||||
check_docker
|
||||
build_image
|
||||
run_container
|
||||
health_check
|
||||
;;
|
||||
"compose")
|
||||
check_docker
|
||||
deploy_compose
|
||||
;;
|
||||
"ssl")
|
||||
check_docker
|
||||
deploy_ssl
|
||||
;;
|
||||
"logs")
|
||||
show_logs
|
||||
;;
|
||||
"health")
|
||||
health_check
|
||||
;;
|
||||
"stop")
|
||||
stop_container
|
||||
;;
|
||||
"cleanup")
|
||||
cleanup
|
||||
;;
|
||||
"help"|*)
|
||||
show_help
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Run main function with all arguments
|
||||
main "$@"
|
||||
Reference in New Issue
Block a user