LibrePortal/scripts/docker/compose/setup_compose_yml.sh
librelad 875a60f90f LibrePortal v0.1.0 — initial release
A free, open, self-hosted app platform (GNU AGPLv3): one-click app deploys,
Traefik reverse proxy with automatic SSL, rootless Docker support, gluetun
VPN routing, and a web dashboard to manage it all.

Free & open forever to self-host; optional paid hosted services fund it.
See PROMISE.md.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

Signed-off-by: librelad <librelad@digitalangels.vip>
2026-05-21 20:37:54 +01:00

64 lines
2.1 KiB
Bash
Executable File

#!/bin/bash
dockerComposeSetupFile()
{
local app_name="$1"
local custom_file="$2"
local custom_path="$3"
# Source Filenames
if [[ $custom_file == "" ]]; then
local source_compose_file="docker-compose.yml";
elif [[ $custom_file != "" ]]; then
local source_compose_file="$custom_file";
fi
if [[ $custom_path == "" ]]; then
local source_path="$install_containers_dir$app_name"
elif [[ $custom_path != "" ]]; then
local source_path="$install_containers_dir$app_name/$custom_path/"
fi
local source_file="$source_path/$source_compose_file"
# Target Filenames
if [[ $compose_setup == "default" ]]; then
local target_compose_file="docker-compose.yml";
elif [[ $compose_setup == "app" ]]; then
local target_compose_file="docker-compose.$app_name.yml";
fi
local target_path="$containers_dir$app_name"
local target_file="$target_path/$target_compose_file"
if [ "$app_name" == "" ]; then
isError "The app_name is empty."
fi
if [ ! -f "$source_file" ]; then
isError "The source file '$source_file' does not exist."
fi
copyFile "loud" "$source_file" "$target_file" $docker_install_user | sudo tee -a "$logs_dir/$docker_log_file" 2>&1
if [ $? -ne 0 ]; then
isError "Failed to copy the source file to '$target_path'. Check '$docker_log_file' for more details."
fi
# Compose files often carry RANDOMIZED* placeholders for service env
# vars (DB passwords, Laravel APP_KEY, etc). The scanner is a no-op
# on files without placeholders so it's safe to call unconditionally.
if declare -F scanFileForRandomPasswordKeysUsers >/dev/null; then
scanFileForRandomPasswordKeysUsers "$target_file"
fi
# If the app's install template carries a Dockerfile, the compose
# almost certainly has `build: .` and needs the source tree alongside
# the deployed compose. dockerCopyBuildContext is itself a no-op for
# apps with no Dockerfile, so calling here is safe for every app.
if declare -F dockerCopyBuildContext >/dev/null; then
dockerCopyBuildContext "$app_name"
fi
}