CI/CD 구현 회고록

박상훈·2024년 8월 15일

에러 로그

목록 보기
7/13

예전에 구현했던 My Select Shop 프로젝트에 CI/CD를 구현해보았다.

  • 요구사항 및 구현 과정 👉 클릭

  • CI/CD 구현 포함 전체 코드 👉 클릭

이번 포스팅에서는 CI/CD를 구현하며 삽질을 하는 과정에서 있었던 에러 로그들을 살펴 보고, 해결 방법들을 나열해보고자 한다. 구현 흐름은 아래와 같았다.

  • ECR 리포지토리 생성 -> ECS 클러스터 및 서비스 생성 -> AWS IAM에 접속하여 사용자 생성 -> 깃허브 CI 파일 작성


❗ cannotpullcontainererror: pull image manifest has been retried 1 time(s): not found

위의 과정들을 수행하고 가장 먼저 마주한 에러이다.

ECS 서비스의 배포에 실패하였을 때 태스크 정보를 클릭하니 위와 같은 에러가 발생했다. 대상 ECR 레포지토리에서 이미지를 찾을 수 없어 발생하였다.

실제로 ECR 레포지토리에는 아무 이미지도 없었고, 왜 도커 이미지가 적재되지 않은 것인지 찾는 데 시간이 좀 걸렸다.

Github Actions에서 워크플로우가 텅 빈 것을 발견했고, 이 때문에 CI/CD 작업 자체가 실행이 되지 않았다. 때문에 ECR에 도커 이미지가 빌드되지 않는 것은 어찌보면 당연한 수순이었다.

해결 방법

깃허브 CI 파일을 작성할 때 .github/workflows 경로에 aws.yml 파일을 만들어두었다. 아무 생각 없이 branches를 main으로 설정해 주었으나 My Select Shop 프로젝트의 github 레포지토리는 'Master'를 메인 브랜치로 놓고 작업을 하였다.

name: Deploy to Amazon ECS

on:
  push:
    branches: [ "master" ]

위와 같이 대상 브랜치를 'master'로 놓으니 작업이 Github Actions에 워크플로우가 등록이 되었다.


❗ ERROR: failed to solve: failed to read dockerfile: open Dockerfile: no such file or directory

워크플로우가 작동하며 생긴 두 번째 오류이다. 분명 dockerfile을 제대로 만들었다고 생각했는데 dockerfile을 찾을 수 없다는 오류가 나왔다.

해결 방법

먼저 구글링을 통해 무엇이 원인인지 파악했고, 그 결과 도커 파일의 이름을 잘못 설정해서 그런 것 같다는 생각이 들었다.

아래의 이미지를 보면 Dockerfile이 아닌 DockerFile로 이름이 설정되어 있다. 대소문자를 구별하여 알맞은 이름을 입력해주니 오류가 해결되었다.

  • 오류가 발생한 첫 시도를 제외하고 CI/CD 구현이 제대로 완료된 것을 확인할 수 있다.

이후 로드밸런서의 DNS주소로 들어가면 사이트가 잘 작동하는것을 확인할 수 있다!

profile
안녕하세요

0개의 댓글