#!/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 "$@"