Files
yakpanel-core/scripts/docker-compose.sh
2026-04-07 20:57:48 +05:30

35 lines
959 B
Bash

#!/usr/bin/env bash
# Run docker compose for this repo. After `usermod -aG docker`, the current shell
# may still lack docker group until logout; use `sg docker` so compose works immediately.
set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$ROOT" || exit 1
if [[ ! -f .env ]] && [[ -f .env.example ]]; then
cp -n .env.example .env || true
fi
if [[ -f .env ]]; then
bash "$(dirname "${BASH_SOURCE[0]}")/ensure-env-ports.sh"
fi
run_docker_compose() {
local -a compose_args=(--env-file .env -f docker-compose.yakpanel.yml)
if docker info >/dev/null 2>&1; then
docker compose "${compose_args[@]}" "$@"
return
fi
local cmd
cmd="cd $(printf '%q' "$ROOT") && docker compose"
for a in "${compose_args[@]}" "$@"; do
cmd+=" $(printf '%q' "$a")"
done
if command -v sg >/dev/null 2>&1; then
sg docker -c "$cmd"
return
fi
sudo docker compose "${compose_args[@]}" "$@"
}
run_docker_compose "$@"