docker push 에서 denied: requested access to the resource is denied
에러가 났다.
gitlab password를 token으로 넘겨주어도 같은 문제가 발생하였다.
⭕️ 해결
https://gitlab.com/gitlab-org/gitlab/-/issues/19211#note_707092720
위의 페이지에서 다양한 이유들이 나오는데, 현재 상황은 디폴트로 생성되는 resistry container이름과 이미지 이름이 일치하지 않아서 생기는 문제인 듯 하였다. 프로젝트 이름을 변수로 넘겨주는데 resistry repo이름은 대문자가 될 수 없어서 이를 바꾸었는데 임의로 _
를 추가하였더니 생겼던 문제인 듯 하다.
위 페이지의 해결방법으로 script를 바꾸었는데 오히려 변수에 아이디와 비밀번호를 등록하지 않아서 더 좋은 것 같다. 공식 안내문서를 참고하여 수정하였다.
stages:
- dockerbuild-push
package:
image: docker:latest #도커 위에서 빌드를 한다
stage: dockerbuild-push
services:
- docker:dind #도커 안에서 도커를 빌드할 때 주는 옵션
variables:
IMG_TAG: ${CI_REGISTRY_IMAGE}:latest #환경 변수 설정, CI_REGISTRY_IMAGE : 이미지에 사용하는 이름
before_script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
script:
- docker build -t $IMG_TAG .
- docker push $IMG_TAG
after_script:
- docker logout
$CI_REGISTRY_USER
$CI_REGISTRY_PASSWORD
로 자동생성된다.$CI_REGISTRY_IMAGE
돌고돌아 username을 바꿀 필요가 없었다….ㅜㅜ
어차피 변수에 안 들어가는데..