- Move Dockerfile, Dockerfile.base, docker-compose.yml to docker/ - Update docker-compose.yml with correct context paths - Update scripts/build.sh to use new paths - Update DOCKER_QUICKSTART.md with new commands - Add scripts/build.sh to tracked files Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
88 lines
2.7 KiB
Bash
Executable File
88 lines
2.7 KiB
Bash
Executable File
#!/bin/bash
|
|
# Stegasoo Build Script
|
|
# Usage: ./build.sh [base|fast|full|clean]
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
DOCKER_DIR="$PROJECT_DIR/docker"
|
|
cd "$PROJECT_DIR"
|
|
|
|
# Colors
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
CYAN='\033[0;36m'
|
|
NC='\033[0m'
|
|
|
|
# Detect docker compose command
|
|
if docker compose version &>/dev/null; then
|
|
COMPOSE_CMD="docker compose"
|
|
elif command -v docker-compose &>/dev/null; then
|
|
COMPOSE_CMD="docker-compose"
|
|
else
|
|
echo -e "${RED}Error: docker compose not found${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# Check if we need sudo
|
|
SUDO=""
|
|
if ! docker ps &>/dev/null; then
|
|
SUDO="sudo"
|
|
fi
|
|
|
|
COMPOSE_FILE="$DOCKER_DIR/docker-compose.yml"
|
|
|
|
case "${1:-fast}" in
|
|
base)
|
|
echo -e "${YELLOW}Building base image (this takes 5-10 minutes)...${NC}"
|
|
$SUDO docker build -f "$DOCKER_DIR/Dockerfile.base" -t stegasoo-base:latest .
|
|
echo -e "${GREEN}Base image built! Future builds will be fast.${NC}"
|
|
echo ""
|
|
echo "Optional: Push to registry for team use:"
|
|
echo " docker tag stegasoo-base:latest yourregistry/stegasoo-base:latest"
|
|
echo " docker push yourregistry/stegasoo-base:latest"
|
|
;;
|
|
|
|
fast)
|
|
if ! $SUDO docker image inspect stegasoo-base:latest >/dev/null 2>&1; then
|
|
echo -e "${YELLOW}Base image not found. Building it first (one-time)...${NC}"
|
|
$0 base
|
|
fi
|
|
echo -e "${CYAN}Fast build using base image...${NC}"
|
|
$SUDO $COMPOSE_CMD -f "$COMPOSE_FILE" build
|
|
echo -e "${GREEN}Done! Start with: $COMPOSE_CMD -f docker/docker-compose.yml up -d${NC}"
|
|
;;
|
|
|
|
full)
|
|
echo -e "${YELLOW}Full build from scratch (slow)...${NC}"
|
|
$SUDO $COMPOSE_CMD -f "$COMPOSE_FILE" build --no-cache
|
|
echo -e "${GREEN}Done! Start with: $COMPOSE_CMD -f docker/docker-compose.yml up -d${NC}"
|
|
;;
|
|
|
|
clean)
|
|
echo -e "${YELLOW}Cleaning up...${NC}"
|
|
$SUDO $COMPOSE_CMD -f "$COMPOSE_FILE" down --rmi local -v 2>/dev/null || true
|
|
$SUDO docker rmi stegasoo-base:latest 2>/dev/null || true
|
|
echo -e "${GREEN}Cleaned!${NC}"
|
|
;;
|
|
|
|
*)
|
|
echo -e "${CYAN}Stegasoo Build Script${NC}"
|
|
echo ""
|
|
echo "Usage: $0 [command]"
|
|
echo ""
|
|
echo "Commands:"
|
|
echo " base Build the base image (one-time, 5-10 min)"
|
|
echo " fast Fast build using base image (default, ~10 sec)"
|
|
echo " full Full rebuild from scratch (slow, no base needed)"
|
|
echo " clean Remove all images and volumes"
|
|
echo ""
|
|
echo "Typical workflow:"
|
|
echo " 1. First time: $0 base"
|
|
echo " 2. Daily dev: $0 fast"
|
|
echo " 3. Deps change: $0 base"
|
|
;;
|
|
esac
|