<강의>따라하며 배우는 도커와 CI환경(John Ahn) 4 - 운영환경(aws eb)
2022.04.16
- 전체 프로세스
로컬 -> 깃허브 -> 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 추가
댓글을 작성해보세요.