CICD With Github Actions + Docker-compose + Elastic Beanstalk 구성 시 삽질했던 부분

백엔드·2024년 2월 21일

들어가며

오랜시간 삽질했던 부분, 같은 실수 반복하지 않기 위해 적습니다..

docker-compose multiple command

아래와 같은 형태로 작성합니다.

💪 예시

command:
      - /bin/sh
      - -c
      - |
        yarn seed:run
        yarn start:dev

Elastic Beanstalk + Docker 환경변수

Amazon Linux 2 Docker 플랫폼에서 Docker Compose 도구를 사용하는 경우 Elastic Beanstalk는 애플리케이션 프로젝트의 루트 디렉터리에 .env라는 Docker Compose 환경 파일을 생성합니다. 이 파일에는 Elastic Beanstalk에 대해 구성한 환경 변수가 저장됩니다.


컨테이너가 Elastic Beanstalk에서 정의한 환경 변수를 참조하려면 이러한 구성 방법 중 하나 또는 둘 모두 따라야 합니다.
  1. Elastic Beanstalk에서 생성한 .env 파일을 env_file 파일의 docker-compose.yml 구성 옵션에 추가합니다.

  2. docker-compose.yml 파일에서 환경 변수를 직접 정의합니다.

ref


Elastic Beanstalk 로깅 설정

Elastic Beanstalk > Environments > Project Name > Configuration 메뉴에서
Instance log streaming to CloudWatch Logs 영역, Log streaming Enabled 를 체크하면 기본적인 ecs, docker-events 로그들만 확인할 수 있었고 application 과 web server(nginx) 의 로그 정보는 확인할 수 없었다

application 과 web server(nginx) 로그정보들을 확인하기 위해선 기본설정로그 이외에 custom log를 보기 위한 추가설정이 필요하다.

IAM Roles에서 elasticbeanstalk ec2와 관련된 aws-elasticbeanstalk-ec2-role 을 찾아서 아래 형태의 CloudwatchPolicy 를 추가로 생성해 Attach 해야한다.

{
   "Version": "2012-10-17",
   "Statement": [
       {
           "Effect": "Allow",
           "Action": [
               "logs:CreateLogGroup",
               "logs:CreateLogStream",
               "logs:PutLogEvents",
               "logs:DescribeLogStreams"
           ],
           "Resource": [
               "arn:aws:logs:ap-northeast-2:999999999999:log-group:*:*"
           ]
       }
   ]
}

ref

profile
백엔드 개발자

0개의 댓글