1. 도커를 이용한 beanstalk 배포하기 with Github Actions

우창완·2022년 6월 28일
3
post-thumbnail

백엔드, 프론트엔드 영역에 관계없이 운영툴들에 대한 지식과 이해가 필요해짐에 따라서, 이번 시리즈에서는 도커를 통해서 aws beanstalk에 배포 후, 이를 github Actions을 통해 자동화하는 과정을 알아보겠습니다.

이러한 Devops 툴들에 대해서 유용하다는 이야기도 많이 들어왔고, 각각의 툴들에 대해 파편적으로 이해를 하고 있었지만 직접 처음부터 끝까지 설정해보는 것이 툴들에 대한 이해뿐만 아니라 전반적인 이해 측면에서도 많은 도움이 되었습니다.

전체적인 흐름도

여러가지 툴들이 사용되는 만큼 전체적으로 가장 중요한 것은 전체적인 흐름을 이해하는 것입니다. 환경이 익숙하지 않을 때 어디에서 막혔는지 쉽게 알 수 있어 삽질을 덜할 수 있습니다..!(중요)

  1. Jib을 이용해서 Docker hub에 이미지를 업로드합니다.
  2. docker-compose.yml에 환경들을 서비스에 필요한 툴들을 정의해놓고 이 파일을 Elastic Beanstalk에 업로드합니다.
  3. 이 과정을 Github Actions를 통해 자동화합니다.

프로젝트 생성

이번 편에서는 docker와 연동 후, jib을 통해 docker hub에 프로젝트를 올려보는 부분까지 다루겠습니다.

먼저 start.spring.io에서 프로젝트를 하나 생성해줍니다.

글에서는 gradle로 진행할거여서 maven대신 gradle을 선택하고, Java11 버전, 테스트를 위해 Spring Web dependency까지 추가하였습니다.

Jib 의존성 추가

Jib는 구글에서 만들 자바 이미지 컨테이너 서비스로,cache layering을 충분히 이용하여 자바에 최적화된 방식으로 이미지를 만들어줍니다.

또, jar을 빌드하고, Dockerfile을 작성하고 docker daemon 띄우고 docker hub에 push하는 여러 과정을 압축해서 daemon을 띄울 필요 없이, 한번에 처리할 수 있습니다. 추후에 CI/CD 할 때도 프로세스가 간편해짐에 따라 더 편하게 자동화 할 수 있습니다.

jib사용하기 이전

jib을 사용할 경우

아래와 같이 plugins에 의존성을 추가하고 아래에 jib 설정을 추가해줍니다. 추가 설정은 여기를 참고해주세요

  • from: 어플리케이션에 사용할 베이스 이미지를 지정합니다. 저는 alpine버전을 사용했습니다.
  • to: 타켓이미지를 지정합니다. docker hub이름/어플리케이션 으로 지정하면 됩니다.

Docker hub 이미지 업로드

Docker hub란 이미지 저장소 서비스입니다. 여러 공식 이미지를 다운받을 수 있고, 자신의 이미지를 public으로 저장소에 공유할 수 있습니다. 우리가 만든 이미지를 aws에서 사용하기 위해서 docker hub에 업로드해줍니다.

여기까지 설정하고 gradle을 refresh하면 gradle 관련 명령어를 사용할 수 있는데요, terminal에서 gradle task를 실행시키면 이미지를 만든 뒤, 저장소로 업로드까지 해줍니다.

./gradlew jib

위와 같은 명령어를 작성하고, docker hub에 접속해보면 image가 build.gradle에 설정해준대로 업로드 되어 있는 것을 확인할 수 있습니다.

profile
CDD(Coffee driven development)

0개의 댓글