fix(dev): podman + Docker Desktop credHelpers(https://) 충돌 자동 우회(공개 이미지 pull)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
16
bin/yakcloud
16
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', 등록명 <host>, 인그레스 80/443
|
||||
# --name dev2 --port N → kind 'yak-dev2', ctx 'kind-yak-dev2', 등록명 <host>-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)
|
||||
|
||||
Reference in New Issue
Block a user