# 다른 스크립트가 source 해서 쓰는 공용 헬퍼. 직접 실행하지 않는다. # # 목적: `usermod -aG docker` 는 재로그인 전까지 적용되지 않는다. # 그 사이에도 스크립트가 동작하도록 docker 권한을 실제로 시험해 보고 # 안 되면 sudo 로 폴백한다. PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" say() { printf '\n\033[1;36m==> %s\033[0m\n' "$*"; } ok() { printf '\033[1;32m ✔ %s\033[0m\n' "$*"; } warn() { printf '\033[1;33m ! %s\033[0m\n' "$*"; } die() { printf '\033[1;31m ✘ %s\033[0m\n' "$*" >&2; exit 1; } if ! command -v docker >/dev/null 2>&1; then die "docker 가 설치돼 있지 않습니다. 먼저: ! bash scripts/host_install_docker.sh (SETUP.md 참고)" fi if docker info >/dev/null 2>&1; then DOCKER=(docker) else if sudo -n true 2>/dev/null; then DOCKER=(sudo docker) else warn "docker 소켓에 권한이 없어 sudo 로 실행합니다 (비밀번호를 물어봅니다)." warn "재로그인하면 sudo 없이 쓸 수 있습니다 — SETUP.md 3단계." DOCKER=(sudo docker) fi fi dc() { ( cd "$PROJECT_ROOT" && "${DOCKER[@]}" compose "$@" ); } # .env 로드 (compose 는 알아서 읽지만, 셸 쪽에서도 값이 필요하다) if [[ -f "$PROJECT_ROOT/.env" ]]; then set -a; . "$PROJECT_ROOT/.env"; set +a fi