diff --git a/bin/yakcloud b/bin/yakcloud index 673e095..3c1550e 100755 --- a/bin/yakcloud +++ b/bin/yakcloud @@ -411,6 +411,21 @@ _dev_runtime() { echo "" } +# Docker Desktop 이 ~/.docker/config.json 에 넣는 credHelpers/auths 키가 'https://index.docker.io/v1/' 처럼 +# 스킴(http[s]://) 접두어를 가지면 podman 이 자격 파싱에서 거부('key ... contains http[s]:// prefix')해 +# 공개 이미지 pull(kindest/node·postgres·앱 베이스)조차 실패한다. podman 일 때, 그리고 문제 키가 있을 때만 +# 관리형 빈 auth 파일로 REGISTRY_AUTH_FILE 을 지정해 우회한다(공개 이미지엔 자격 불필요). 사용자가 이미 +# REGISTRY_AUTH_FILE 을 지정했으면 존중. docker 런타임엔 영향 없음. +_podman_auth_fix() { + [ "${1:-}" = podman ] || return 0 + [ -n "${REGISTRY_AUTH_FILE:-}" ] && return 0 + grep -q 'https\?://' "$HOME/.docker/config.json" 2>/dev/null || return 0 + local af="$CONFIG_DIR/podman-auth.json" + [ -f "$af" ] || { mkdir -p "$CONFIG_DIR" 2>/dev/null; printf '{}' > "$af"; } + export REGISTRY_AUTH_FILE="$af" + info "podman: Docker Desktop credHelpers(https:// 키) 우회 — REGISTRY_AUTH_FILE=$af" +} + # 여러 로컬 dev 클러스터 지원 — --name/--port 를 파싱해 클러스터명·컨텍스트·등록명·인그레스 포트를 파생. # 기본(--name 없음) = dev → kind 'yak-dev', ctx 'kind-yak-dev', 등록명 , 인그레스 80/443 # --name dev2 --port N → kind 'yak-dev2', ctx 'kind-yak-dev2', 등록명 -dev2, 인그레스 N (80은 기본 클러스터 몫) @@ -520,6 +535,7 @@ _dev_deregister() { cmd_dev() { local sub="${1:-}"; [ "$#" -gt 0 ] && shift _dev_resolve "$@" # --name/--port 파싱 → DEV_NAME/DEV_CLUSTER/DEV_CTX/DEV_HTTP_PORT/DEV_ARGS + _podman_auth_fix "$(_dev_runtime)" # podman + Docker Desktop credHelpers(https://) 충돌 자동 우회(공개 이미지) case "$sub" in up) cmd_dev_up ;; deploy|status|clean)