From c6c28b2d692b7139aa2ef54c868040aa0427567f Mon Sep 17 00:00:00 2001 From: Chris King Date: Thu, 23 Jan 2025 09:07:24 -0800 Subject: [PATCH] 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 --- caddy-proxy | 3 ++ docker-project-manager.sh | 80 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100755 caddy-proxy create mode 100755 docker-project-manager.sh diff --git a/caddy-proxy b/caddy-proxy new file mode 100755 index 0000000..cba47ba --- /dev/null +++ b/caddy-proxy @@ -0,0 +1,3 @@ +#!/bin/bash +# shellcheck disable=SC2046 +docker exec -i -w /etc/caddy $(docker ps | grep caddy | awk '{print $1;}') caddy "$@" \ No newline at end of file diff --git a/docker-project-manager.sh b/docker-project-manager.sh new file mode 100755 index 0000000..eb9b9f6 --- /dev/null +++ b/docker-project-manager.sh @@ -0,0 +1,80 @@ +#!/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 \ No newline at end of file