- Create layered container architecture: Base, Light, Full, Computational - Implement non-root user management with UID/GID mapping - Add Markwhen timeline tool to documentation stack - Create wrapper scripts for environment variable handling - Update documentation across all containers - Establish naming convention using RCEO-AIOS-Public-Tools- prefix - Add organizational rule to keep repository root clean - Remove old unorganized container files
67 lines
2.3 KiB
Bash
Executable File
67 lines
2.3 KiB
Bash
Executable File
#!/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 <service> <command>|exec <service> <command>|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 |