107 lines
3.0 KiB
Bash
Executable File
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
|