35 lines
959 B
Bash
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 "$@"
|