#!/bin/bash # docker-compose-wrapper.sh - Wrapper script to detect host UID/GID and run docker-compose set -e # Exit on any error # Detect the UID and GID of the user that owns the workspace directory (parent directory) WORKSPACE_DIR="$(cd "$(dirname "$0")/../.." && pwd)" echo "Detecting user ID from workspace directory: $WORKSPACE_DIR" if [ -d "$WORKSPACE_DIR" ]; then DETECTED_USER_ID=$(stat -c %u "$WORKSPACE_DIR" 2>/dev/null || echo 0) DETECTED_GROUP_ID=$(stat -c %g "$WORKSPACE_DIR" 2>/dev/null || echo 0) # If detection failed, try current user if [ "$DETECTED_USER_ID" = "0" ]; then DETECTED_USER_ID=$(id -u) DETECTED_GROUP_ID=$(id -g) fi else # Fallback to current user if workspace directory doesn't exist DETECTED_USER_ID=$(id -u) DETECTED_GROUP_ID=$(id -g) fi echo "Detected USER_ID=$DETECTED_USER_ID and GROUP_ID=$DETECTED_GROUP_ID" # Set environment variables for docker-compose export LOCAL_USER_ID=$DETECTED_USER_ID export LOCAL_GROUP_ID=$DETECTED_GROUP_ID # Show usage information echo "" echo "Usage: $0 [build|up|run |exec |down|ps]" echo "" echo "Examples:" echo " $0 up # Start services" echo " $0 build # Build containers" echo " $0 run docmaker-full bash # Run command in container" echo " $0 down # Stop and remove containers" echo "" # Check if docker compose (new format) or docker-compose (old format) is available if command -v docker &> /dev/null && docker compose version &> /dev/null; then # Use new docker compose format if [ $# -eq 0 ]; then echo "No command provided. Running 'docker compose up'..." docker compose up else # Execute the provided docker compose command echo "Running: docker compose $*" docker compose "$@" fi elif command -v docker-compose &> /dev/null; then # Fallback to old docker-compose format if [ $# -eq 0 ]; then echo "No command provided. Running 'docker-compose up'..." docker-compose up else # Execute the provided docker-compose command echo "Running: docker-compose $*" docker-compose "$@" fi else echo "Error: Neither 'docker compose' nor 'docker-compose' command found." echo "Please install Docker Compose to use this script." exit 1 fi