728x90
반응형
무슨 일이 있었나
GitHub Actions CD 파이프라인에서 Docker 이미지를 ghcr.io에 push하려다 아래 에러가 발생했다.
ERROR: failed to build: invalid tag "ghcr.io/SOLDOUT-2/omc-eureka-server:latest": repository name must be lowercase
원인
github.repository_owner 값이 SOLDOUT-2처럼 대문자를 포함할 수 있는데, ghcr.io(GitHub Container Registry)는 이미지 태그에 소문자만 허용한다. OCI 이미지 스펙 자체가 repository name을 소문자로 제한하기 때문이다.
해결
workflow 파일에서 owner를 소문자로 변환하는 step을 추가했다.
env:
OWNER: ${{ github.repository_owner }}
steps:
- name: Set lowercase owner
run: echo "OWNER_LC=${OWNER,,}" >> $GITHUB_ENV
이후 이미지 태그에서 github.repository_owner 대신 env.OWNER_LC를 사용한다.
tags: ghcr.io/${{ env.OWNER_LC }}/omc-eureka-server:latest
${OWNER,,} 는 bash의 소문자 변환 문법이다.
교훈
ghcr.io뿐 아니라 Docker Hub, ECR 등 대부분의 컨테이너 레지스트리가 소문자를 요구한다. GitHub org명이나 사용자명에 대문자가 있으면 반드시 변환 처리가 필요하다.
반응형
'Study' 카테고리의 다른 글
| [내일배움캠프 TIL] GitHub Actions에서 org 레포 ghcr.io 패키지 push 권한 (0) | 2026.07.01 |
|---|---|
| [내일배움캠프 TIL] Lettuce 첫 번째 Redis 호출이 3초나 걸린 이유 (Cold Start 지연) (0) | 2026.06.30 |
| [내일배움캠프 TIL] Spring Cloud Gateway Rate Limiting에 Redis가 필요한 이유 (0) | 2026.06.26 |
| [내일배움캠프 TIL] Testcontainers 볼륨 자동 정리 (Ryuk) & EmbeddedKafka 통합 테스트 (0) | 2026.06.24 |
| [내일배움캠프 TIL] Redis 재고 차감 후 확인하는 이유 & Lua 스크립트 안 쓰는 이유 (0) | 2026.06.23 |