1
0
Files
local-docker-mngt/run

107 lines
3.0 KiB
Bash
Executable File

#!/bin/bash
# Load parameters
ACTION=$1
ENV_FILE=".env"
# Detect docker compose command (cross-platform compatibility)
if command -v docker-compose >/dev/null 2>&1; then
DOCKER_COMPOSE="docker-compose"
elif command -v docker >/dev/null 2>&1 && docker compose version >/dev/null 2>&1; then
DOCKER_COMPOSE="docker compose"
else
echo "Error: Neither docker-compose nor docker compose found!"
exit 1
fi
# Check if .env file exists
if [[ ! -f $ENV_FILE ]]; then
echo "Configuration file $ENV_FILE not found. Let's create it!"
echo ""
# Default values
DEFAULT_DEV_URL="dev.linuxak.com"
DEFAULT_EXTERNAL_NETWORK="traefiknet"
DEFAULT_FORCE_HTTPS_REDIRECT="true"
echo "Please provide the following configuration values:"
echo "(Press Enter to use default values shown in brackets)"
echo ""
# Ask for domain name
read -p "Development domain name [$DEFAULT_DEV_URL]: " input_dev_url
DEV_URL="${input_dev_url:-$DEFAULT_DEV_URL}"
# Ask for external network
read -p "External Docker network name [$DEFAULT_EXTERNAL_NETWORK]: " input_external_network
EXTERNAL_NETWORK="${input_external_network:-$DEFAULT_EXTERNAL_NETWORK}"
# Ask for HTTPS redirect
echo ""
echo "Force HTTPS redirect? (true/false)"
read -p "HTTPS redirect [$DEFAULT_FORCE_HTTPS_REDIRECT]: " input_force_https
FORCE_HTTPS_REDIRECT="${input_force_https:-$DEFAULT_FORCE_HTTPS_REDIRECT}"
# Validate HTTPS redirect value
if [[ "$FORCE_HTTPS_REDIRECT" != "true" && "$FORCE_HTTPS_REDIRECT" != "false" ]]; then
echo "Invalid value for HTTPS redirect. Using 'true' as default."
FORCE_HTTPS_REDIRECT="true"
fi
# Create .env file
echo ""
echo "Creating $ENV_FILE with the following configuration:"
echo " DEV_URL=$DEV_URL"
echo " EXTERNAL_NETWORK=$EXTERNAL_NETWORK"
echo " FORCE_HTTPS_REDIRECT=$FORCE_HTTPS_REDIRECT"
echo ""
cat > $ENV_FILE << EOF
DEV_URL=$DEV_URL
EXTERNAL_NETWORK=$EXTERNAL_NETWORK
FORCE_HTTPS_REDIRECT=$FORCE_HTTPS_REDIRECT
EOF
echo "Configuration file $ENV_FILE created successfully!"
echo ""
fi
# Load environment variables
source $ENV_FILE
case "$ACTION" in
"up")
# Create network if it doesn't exist (cross-platform)
if ! docker network ls | grep -q "${EXTERNAL_NETWORK}"; then
docker network create "${EXTERNAL_NETWORK}" >/dev/null 2>&1 || true
fi
# Check HTTPS redirect setting
if [[ "${FORCE_HTTPS_REDIRECT}" == "true" ]]; then
MSG="Starting with HTTPS redirect enabled..."
${DOCKER_COMPOSE} -f docker-compose.yml -f docker-compose.https-redirect.yml up -d
else
MSG="Starting without HTTPS redirect..."
${DOCKER_COMPOSE} up -d
fi
echo ""
echo "${MSG}"
sleep 2
echo ""
echo "Available services:"
echo "Traefik: https://traefik.${DEV_URL}"
echo "Portainer: https://portainer.${DEV_URL}"
;;
"restart")
${DOCKER_COMPOSE} restart
;;
"down")
${DOCKER_COMPOSE} down
;;
*)
echo "Usage: $0 [up|restart|down]"
exit 1
;;
esac