<강의>따라하며 배우는 도커와 CI환경(John Ahn) 4 - 운영환경(aws eb)

  • 전체 프로세스
    로컬 -> 깃허브 -> travis CI ->
    AWS EB (AWS S3 -> AWS ECS(ec2 컨테이너 인스턴스)에서 도커 이미지 생성 및 배포

 

  • 운영환경을 위한 Nginx
    - 리액트 컨테이너 안의 서버로 엔진엑스 사용
    - 빌드 파일에서 엔진엑스가 정적파일 찾아서 반환
    - Dockerfile에 Nginx 이미지 추가

FROM nginx

COPY --from=builder /usr/src/app/build /usr/share/nginx/html

builder 스테이지에서 생성된 빌드 파일을 엔진엑스가 사용하는 경로(기본값)에 복사함

 

  • .travis.yml 파일

sudo: required

language: generic

services:

- docker

before_install:

- docker build -t <이미지 이름> -f <dockerfile명>

script:

- docker run -e CI=true <이미지 이름> docker run test -- --coverage

after_success:

 

  • AWS
    - ec2는 컴퓨터를 임대하는 개념 -> OS, 웹서버, DB 설치해서 사용
    - EB(Elastic Beastalk) -> 서버, 언어, 도커와 함께 개발된 서비스를 배포 및 확장
    - eb는 ec2, db, 보안 그룹 등을 컨트롤함(eb가 더 넓은 개념)

 

  • AWS EB 환경구성
    브라우저 -> eb의 로드발란서가 ec2 인스턴스들에게 분산시

 

  • .travis.yml 파일에 배포 설정 추가
    script 아래에

deploy:

provider: elasticbeanstalk

region: ap-northeast-2

app: docker-react-project <앱이름>

env: DockerReactProject-env <환경이름>

bucket_name: elasticbeanstalk-ap-northeast-2-234234235 <자동 생성 s3 버킷 이름>

bucket_path: docker-react-project <앱이름>

on:

branch: master <git 배포용 branch 선택>

 

  • travis ci에 aws 접근 권한 설정
    아이엠 사용자 생성 후 트래비스 환경 변수에 AWS_ACCESS_KEY, AWS_SECRET_KEY 값 추가
    .travis.yml 파일에도 deploy 부분에
    access_key_id: $AWS_ACCESS_KEY
    secret_access_key: $AWS_SECRET_KEY

 

  • 엔진엑스 포트 매핑
    Dockerfile에 
    FROM nginx 밑에 
    EXPOSE 80 추가

댓글을 작성해보세요.

채널톡 아이콘