[따라하며 배우는 도커와 CI 환경] 간단한 어플 실제로 배포해보기 (테스트 & 배포)

Jimin Lim·2022년 6월 22일
0

Docker

목록 보기
7/9
post-thumbnail

✅ Travis CI 이용한 배포 순서

  1. 로컬 Git에 있는 소스를 Github 저장소에 Push
  2. Github master 저장소에 소스가 Push가 되면 Travis CI에게 소스가 Push 되었음을 알린다.
  3. Travis CI는 업데이트된 소스를 Github에서 가지고 온다.
  4. 깃헙에서 가져온 소스의 테스트 코드를 실행해 본다.
  5. 테스트 코드 실행 후 테스트가 성공하면 AWS 같은 호스팅 사이트로 보내서 배포를 하도록 한다.

(이 강의에서 활성화 버튼을 클릭하는 과정이 나온다. 하지만 현재는 Tracis CI는 활성화 버튼이 없어지고 plan만 가입 한다면 알아서 CI가 실행된다.)

✅ .travis.yml 파일 작성

테스트 실행 전, 도커 파일을 이용해 이미지를 생성해주도록 한다.

sudo: required #sudo 권한

language: generic #언어 플랫폼 선택

services: #도커 환경 구성
  - docker

before_install: #docker run 실행 전 이미지 생성 
  - echo "start Creating an image with dockerfile"
  - docker build -t jimin3263/docker-compose-practice -f Dockerfile.dev .

script: #실행할 스크립트
  - docker run -e CI=true jimin3263/docker-composer-practice npm run test -- --coverage

after_success: #테스트 성공 후 할 일
  - echo "Test Success"
  • --coverage: 테스트를 상세하게 보도록 해준다.
  • -f Dockerfile.dev . : docker file 이름 명시

이때, 두 가지의 오류가 발생했었다.

(1) 단순 오타

docker: Error response from daemon: pull access denied for jym3263/docker-composer-practice, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.

docker가 실행되고 있지 않는 경우이거나, login을 해주지 않아서 발생하는 문제인 줄 알았으나.. 도커 이미지에 대한 오타때문에 난 오류였다. 🤦🏻‍♀️

(2) learn react 문구

변경 테스트 2 로 되어있던 부분을 바꾸도록 하면 된다.


성공 !

✅ Elastic BeanStalk

: EC2 인스턴스나 DB 같이 많은 것들을 포함한 환경을 구성하며 만들고 있는 소프트웨어를 업데이트 할때마다 이 환경을 관리해 준다.


또한 트래픽이 많아진다면 로드 밸런서를 이용해 요청들을 분산하도록 한다.

🔗 생성

플랫폼은 Docker로, 브랜치는 Linux로 생성해주도록 한다.

🔗 deploy 코드 작성

deploy:
    provider: elasticbeanstalk
    region: "ap-northeast-2"
    app: "react-app"
    env: "Reactapp-env"
    bucket_name: {버킷 name}
    bucket_path: {버킷 path}
    on:
        branch: master 
  • bucket_name: travis 에서 가지고 있는 파일을 압축해 S3에 보내도록 하므로 bucket name을 작성해준다.
  • on branch: master에 머지될 때 배포

🔗 travis CI 에서 AWS에 파일 전송

AWS에서 제공해주는 Secret Key로 전송해주기 위해 IAM 사용자를 생성해주도록 한다.

기존 정책 직접 연결을 선택한 후, 모든 권한을 주도록 한다.

그리고 IAM 에서 발급받은 key들을 travis CI 환경변수에 입력해주도록 하고, deploy 아래에 환경 변수를 travis.yml 파일에 추가해준다.

access_key_id: $AWS_ACCESS_KEY
secret_access_key: $AWS_SECRET_ACCESS_KEY

🔗 포트 매핑

마지막으로, docker file에 컨테이너에서 매핑을 하기 위해 Expose 80을 넣으면 배포가 된다.

참고로, yml 들여쓰기가 중요하므로 들여쓰기를 잘 확인을 해야 한다🥹

profile
💻 ☕️ 🏝 🍑 🍹 🏊‍♀️

0개의 댓글