From ac02e695d14fc9bda6698ba53baa49dfb3fc515a Mon Sep 17 00:00:00 2001 From: jungwoo choi Date: Sun, 30 Aug 2026 10:43:12 +0900 Subject: [PATCH] =?UTF-8?q?fix(dev):=20podman=20+=20Docker=20Desktop=20cre?= =?UTF-8?q?dHelpers(https://)=20=EC=B6=A9=EB=8F=8C=20=EC=9E=90=EB=8F=99=20?= =?UTF-8?q?=EC=9A=B0=ED=9A=8C(=EA=B3=B5=EA=B0=9C=20=EC=9D=B4=EB=AF=B8?= =?UTF-8?q?=EC=A7=80=20pull)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 --- bin/yakcloud | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) 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)