본문 바로가기
웹/Docker

[Docker]Travis CI, EB를 이용한 배포

by stubborngastropod 2023. 7. 25.
728x90

Travis CI

Travis CI는 연동된 repository에 push가 발생하면 자동으로 해당 어플리케이션을 빌드, 테스트, 배포해준다.

 

그러기 위해서는 travis CI에서 어플리케이션이 있는 repository를 연동해줘야 한다.

 

처음 travis CI에 가입 시 깃헙 계정과 연동해서 로그인해줘야 하고, 아무 플랜도 없을 때는 빌드가 불가능하므로 기본 크레딧이 제공되는 Free plan을 선택해서 카드를 등록해줘야 한다.

 

travis CI로 자동 배포를 하기 위해서는 .travis.yml 파일이 어플리케이션 루트 디렉터리에 있어야 한다.

sudo: required

language: generic

services:
  - docker

before_install:
  - echo "test start"
  - docker build -t stubborngastropod/docker-react-app -f Dockerfile.dev .

script:
  - docker run -e CI=true stubborngastropod/docker-react-app npm run test -- --coverage

after_success:
  - echo "test success"

위 파일은 Dockerfile.dev를 기반으로 이미지를 생성하고 CI를 적용하며 test를 수행하고 "test success"라는 스크립트를 출력하도록 한다.

 

이 파일이 있는 상태로 push를 하게 되면 자동으로 빌드 및 테스트가 작동하는 것을 볼 수 있다.

Elastic Beanstalk

EB는 AWS에서 제공하는 배포 서비스이며 프리티어로도 사용할 수 있기에 기본 설정으로 하나 만들어 준다.

 

배포를 위해 .travis.yml 파일을 수정해준다.

sudo: required

language: generic

services:
  - docker

before_install:
  - echo "test start"
  - docker build -t stubborngastropod/docker-react-app -f Dockerfile.dev .

script:
  - docker run -e CI=true stubborngastropod/docker-react-app npm run test -- --coverage

deploy:
  provider: elasticbeanstalk
  region: "ap-northeast-2"
  app: "docker-react-app"
  env: "Docker-react-app-env"
  bucket_name: "docker-react-app"
  bucket_path: "elasticbeanstalk-ap-northeast-2-819542549062"
  on:
    branch: master
  access_key_id: $AWS_ACCESS_KEY
  secret_access_key_id: $AWS_SECRET_ACCESS_KEY

access_key_idsecret_access_key_id는 IAM에서 EB에 대한 Full Access를 가진 사용자를 만들고 인증키를 생성해서 각각 Travis CI 환경변수로 설정해주면 된다.

 

Dockerfile에서 포트 맵핑까지 마무리하고 push 해주면 내가 만든 어플리케이션이 배포된다.

EB에 나와있는 도메인을 클릭해서 확인할 수 있다.

 

저번에 iam 만지작거리다가 권한이 꼬였는지 S3 access denied 에러 때문에 배포가 안돼서, 다음 실습 때 새 버킷 파서 해봐야겠다...

728x90

' > Docker' 카테고리의 다른 글

[Docker]개발 환경 vs. 운영 환경  (0) 2023.07.24
[Docker]COPY, Volume, Compose  (0) 2023.07.23
[Docker]이미지  (0) 2023.07.23
[Docker]기본 개념  (0) 2023.07.21

댓글