From e831ae48848557f3f4d276cbb74c0eb150a17a07 Mon Sep 17 00:00:00 2001 From: "Aaron D. Lee" Date: Fri, 9 Jan 2026 18:01:15 -0500 Subject: [PATCH] Move Docker files to docker/ directory - 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 --- .gitignore | 1 + Dockerfile => docker/Dockerfile | 0 Dockerfile.base => docker/Dockerfile.base | 0 .../docker-compose.yml | 6 +- docs/DOCKER_QUICKSTART.md | 15 ++-- scripts/build.sh | 87 +++++++++++++++++++ 6 files changed, 102 insertions(+), 7 deletions(-) rename Dockerfile => docker/Dockerfile (100%) rename Dockerfile.base => docker/Dockerfile.base (100%) rename docker-compose.yml => docker/docker-compose.yml (94%) create mode 100755 scripts/build.sh diff --git a/.gitignore b/.gitignore index 4480378..6ff20be 100644 --- a/.gitignore +++ b/.gitignore @@ -70,6 +70,7 @@ scripts/* !scripts/smoke-test.sh !scripts/setup-trusted-certs.sh !scripts/screenshots.sh +!scripts/build.sh # Web UI auth database and SSL certs instance/ diff --git a/Dockerfile b/docker/Dockerfile similarity index 100% rename from Dockerfile rename to docker/Dockerfile diff --git a/Dockerfile.base b/docker/Dockerfile.base similarity index 100% rename from Dockerfile.base rename to docker/Dockerfile.base diff --git a/docker-compose.yml b/docker/docker-compose.yml similarity index 94% rename from docker-compose.yml rename to docker/docker-compose.yml index 14234f6..7ba1009 100644 --- a/docker-compose.yml +++ b/docker/docker-compose.yml @@ -8,7 +8,8 @@ services: # ============================================================================ web: build: - context: . + context: .. + dockerfile: docker/Dockerfile target: web container_name: stegasoo-web ports: @@ -39,7 +40,8 @@ services: # ============================================================================ api: build: - context: . + context: .. + dockerfile: docker/Dockerfile target: api container_name: stegasoo-api ports: diff --git a/docs/DOCKER_QUICKSTART.md b/docs/DOCKER_QUICKSTART.md index 18cbcb7..92e565b 100644 --- a/docs/DOCKER_QUICKSTART.md +++ b/docs/DOCKER_QUICKSTART.md @@ -5,12 +5,17 @@ Get Stegasoo running in Docker in under 5 minutes. ## Build ```bash +# From project root: + # Build web UI image -sudo docker build -t stegasoo-web --target web . +sudo docker build -t stegasoo-web --target web -f docker/Dockerfile . # Or build all targets -sudo docker build -t stegasoo-api --target api . -sudo docker build -t stegasoo-cli --target cli . +sudo docker build -t stegasoo-api --target api -f docker/Dockerfile . +sudo docker build -t stegasoo-cli --target cli -f docker/Dockerfile . + +# Or use docker-compose +sudo docker-compose -f docker/docker-compose.yml build ``` ## Run (Basic) @@ -55,7 +60,7 @@ Visit https://localhost:5000 (accept self-signed cert warning) ## Docker Compose -Create `.env` file: +Create `.env` file in project root: ```bash STEGASOO_AUTH_ENABLED=true STEGASOO_HTTPS_ENABLED=true @@ -65,7 +70,7 @@ STEGASOO_CHANNEL_KEY= Run: ```bash -sudo docker-compose up -d web +sudo docker-compose -f docker/docker-compose.yml up -d web ``` ## Custom SSL Certificates diff --git a/scripts/build.sh b/scripts/build.sh new file mode 100755 index 0000000..deb6066 --- /dev/null +++ b/scripts/build.sh @@ -0,0 +1,87 @@ +#!/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