135 lines
3.7 KiB
Bash
Executable File
135 lines
3.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
ENV_FILE="${ENV_FILE:-$ROOT_DIR/docker/.env.multisite}"
|
|
REPORT_ONLY=false
|
|
|
|
usage() {
|
|
cat <<'EOF'
|
|
Usage:
|
|
netgescon-prepare-multisite-host-paths.sh [--report] [--env-file /path/to/.env.multisite]
|
|
|
|
Creates and reports the host directories used by docker-compose.multisite.yml
|
|
for prod/demo data persistence.
|
|
EOF
|
|
}
|
|
|
|
load_env_file() {
|
|
local env_file="$1"
|
|
local line key value
|
|
|
|
while IFS= read -r line || [[ -n "$line" ]]; do
|
|
line="${line%$'\r'}"
|
|
[[ -z "$line" || "$line" =~ ^[[:space:]]*# ]] && continue
|
|
[[ "$line" != *=* ]] && continue
|
|
|
|
key="${line%%=*}"
|
|
value="${line#*=}"
|
|
export "$key=$value"
|
|
done < "$env_file"
|
|
}
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
--env-file)
|
|
ENV_FILE="$2"
|
|
shift 2
|
|
;;
|
|
--report)
|
|
REPORT_ONLY=true
|
|
shift
|
|
;;
|
|
-h|--help)
|
|
usage
|
|
exit 0
|
|
;;
|
|
*)
|
|
echo "Unknown option: $1" >&2
|
|
usage
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [[ ! -f "$ENV_FILE" ]]; then
|
|
echo "Env file not found: $ENV_FILE" >&2
|
|
exit 1
|
|
fi
|
|
|
|
load_env_file "$ENV_FILE"
|
|
|
|
TRAEFIK_LETSENCRYPT_PATH="${TRAEFIK_LETSENCRYPT_PATH:-/srv/netgescon/traefik/letsencrypt}"
|
|
PROD_DB_DATA_PATH="${PROD_DB_DATA_PATH:-/srv/netgescon/prod/mysql}"
|
|
PROD_STORAGE_PATH="${PROD_STORAGE_PATH:-/srv/netgescon/prod/storage}"
|
|
PROD_CACHE_PATH="${PROD_CACHE_PATH:-/srv/netgescon/prod/bootstrap-cache}"
|
|
PROD_PUBLIC_PATH="${PROD_PUBLIC_PATH:-/srv/netgescon/prod/public}"
|
|
PROD_REDIS_DATA_PATH="${PROD_REDIS_DATA_PATH:-/srv/netgescon/prod/redis}"
|
|
DEMO_DB_DATA_PATH="${DEMO_DB_DATA_PATH:-/srv/netgescon/demo/mysql}"
|
|
DEMO_STORAGE_PATH="${DEMO_STORAGE_PATH:-/srv/netgescon/demo/storage}"
|
|
DEMO_CACHE_PATH="${DEMO_CACHE_PATH:-/srv/netgescon/demo/bootstrap-cache}"
|
|
DEMO_PUBLIC_PATH="${DEMO_PUBLIC_PATH:-/srv/netgescon/demo/public}"
|
|
DEMO_REDIS_DATA_PATH="${DEMO_REDIS_DATA_PATH:-/srv/netgescon/demo/redis}"
|
|
MULTISITE_BACKUP_PATH="${MULTISITE_BACKUP_PATH:-$ROOT_DIR/storage/backups/multisite}"
|
|
|
|
declare -a all_paths=(
|
|
"$TRAEFIK_LETSENCRYPT_PATH"
|
|
"$PROD_DB_DATA_PATH"
|
|
"$PROD_STORAGE_PATH"
|
|
"$PROD_CACHE_PATH"
|
|
"$PROD_PUBLIC_PATH"
|
|
"$PROD_REDIS_DATA_PATH"
|
|
"$DEMO_DB_DATA_PATH"
|
|
"$DEMO_STORAGE_PATH"
|
|
"$DEMO_CACHE_PATH"
|
|
"$DEMO_PUBLIC_PATH"
|
|
"$DEMO_REDIS_DATA_PATH"
|
|
"$MULTISITE_BACKUP_PATH"
|
|
)
|
|
|
|
declare -a app_runtime_paths=(
|
|
"$PROD_STORAGE_PATH/app"
|
|
"$PROD_STORAGE_PATH/framework/cache/data"
|
|
"$PROD_STORAGE_PATH/framework/sessions"
|
|
"$PROD_STORAGE_PATH/framework/views"
|
|
"$PROD_STORAGE_PATH/logs"
|
|
"$PROD_CACHE_PATH"
|
|
"$PROD_PUBLIC_PATH"
|
|
"$DEMO_STORAGE_PATH/app"
|
|
"$DEMO_STORAGE_PATH/framework/cache/data"
|
|
"$DEMO_STORAGE_PATH/framework/sessions"
|
|
"$DEMO_STORAGE_PATH/framework/views"
|
|
"$DEMO_STORAGE_PATH/logs"
|
|
"$DEMO_CACHE_PATH"
|
|
"$DEMO_PUBLIC_PATH"
|
|
)
|
|
|
|
for path in "${all_paths[@]}"; do
|
|
mkdir -p "$path"
|
|
done
|
|
|
|
for path in "${app_runtime_paths[@]}"; do
|
|
mkdir -p "$path"
|
|
done
|
|
|
|
if command -v chown >/dev/null 2>&1; then
|
|
chown -R 33:33 \
|
|
"$PROD_STORAGE_PATH" "$PROD_CACHE_PATH" "$PROD_PUBLIC_PATH" \
|
|
"$DEMO_STORAGE_PATH" "$DEMO_CACHE_PATH" "$DEMO_PUBLIC_PATH" 2>/dev/null || true
|
|
fi
|
|
|
|
if [[ "$REPORT_ONLY" == "true" ]]; then
|
|
echo "ENV_FILE=$ENV_FILE"
|
|
echo "TRAEFIK_LETSENCRYPT_PATH=$TRAEFIK_LETSENCRYPT_PATH"
|
|
echo "PROD_DB_DATA_PATH=$PROD_DB_DATA_PATH"
|
|
echo "PROD_STORAGE_PATH=$PROD_STORAGE_PATH"
|
|
echo "PROD_CACHE_PATH=$PROD_CACHE_PATH"
|
|
echo "PROD_PUBLIC_PATH=$PROD_PUBLIC_PATH"
|
|
echo "PROD_REDIS_DATA_PATH=$PROD_REDIS_DATA_PATH"
|
|
echo "DEMO_DB_DATA_PATH=$DEMO_DB_DATA_PATH"
|
|
echo "DEMO_STORAGE_PATH=$DEMO_STORAGE_PATH"
|
|
echo "DEMO_CACHE_PATH=$DEMO_CACHE_PATH"
|
|
echo "DEMO_PUBLIC_PATH=$DEMO_PUBLIC_PATH"
|
|
echo "DEMO_REDIS_DATA_PATH=$DEMO_REDIS_DATA_PATH"
|
|
echo "MULTISITE_BACKUP_PATH=$MULTISITE_BACKUP_PATH"
|
|
fi |