Files
docker-management/docker-project-manager.sh
Chris King c6c28b2d69 Add caddy-proxy to allow easy access to docker container's caddy executable
Add docker-project-manager.sh which simplifies docker compose up/down usage for projects in /docker
2025-01-23 09:07:24 -08:00

80 lines
1.9 KiB
Bash
Executable File

#!/bin/bash
# filepath: /code/scripts/docker-management/docker-project-manager.sh
# Initialize variables
projects=()
action=""
pull_images=false
# Parse command line arguments
while [[ $# -gt 0 ]]; do
case $1 in
--up|--down|--restart)
if [ -n "$action" ]; then
echo "Error: Cannot specify multiple actions (--up, --down, --restart)"
exit 1
fi
action="${1#--}" # Remove leading --
shift
;;
--pull)
pull_images=true
shift
;;
--*)
echo "Error: Unknown flag '$1'"
exit 1
;;
*)
# Treat anything else as a project name
projects+=("$1")
shift
;;
esac
done
# Validate inputs
if [ -z "$action" ]; then
echo "Error: Must specify either --up, --down, or --restart"
exit 1
fi
if [ ${#projects[@]} -eq 0 ]; then
echo "Error: Must specify at least one project name"
exit 1
fi
# Execute the Docker actions for each project name
docker_dir="/docker/"
for project_name in "${projects[@]}"; do
project_path="${docker_dir}${project_name}"
if [ ! -d "$project_path" ]; then
echo "Error: Project directory '$project_path' not found"
continue
fi
# Check for docker-compose.yml or .yaml
if [ ! -f "${project_path}/docker-compose.yml" ] && [ ! -f "${project_path}/docker-compose.yaml" ]; then
echo "Error: No docker-compose.yml or docker-compose.yaml found in '$project_path'"
continue
fi
cd "$project_path" || continue
case "$action" in
down|restart)
docker compose down --remove-orphans
;;
esac
if [ "$pull_images" = true ]; then
docker compose pull
fi
case "$action" in
up|restart)
docker compose up -d
;;
esac
done