<강의>따라하며 배우는 도커와 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_KEYsecret_access_key: $AWS_SECRET_KEY 엔진엑스 포트 매핑Dockerfile에 FROM nginx 밑에 EXPOSE 80 추가