본문 바로가기

Study

[내일배움캠프 TIL] ghcr.io 이미지 태그는 소문자만 허용된다

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명이나 사용자명에 대문자가 있으면 반드시 변환 처리가 필요하다.

반응형