[1] travis CI -- github에서 진행되는 CI 서비스
이벤트에 따라 자동으로 테스트, 빌드, 배포 가능함
https://www.travis-ci.com/ 에 들어가서 login과 레포지토리 연동을 한다.
1) test를 수행하기 위한 준비: travis ci에서도 도커 환경 구성 -> Dockerfile.dev를 이용해서 도커 이미지 생성
2) test 수행: 어떻게 test를 수행할건지 설정
3) AWS 배포: 어떻게 AWS에 소스 코드를 배포할건지 설정
[1-2] travis 파일 생성
github에서 Travis CI로 소스를 어떻게 전달시키고, 전달 받은 것을 어떻게 test하는지, 또 test 성공시 어떻게 AWS에 전달해서 배포할지 정해야 함 -> .travis.yml 파일 작성 필요
before_install: script를 진행하기 전에 docker파일로 이미지를 만들어줘야 함 -> 그래야 container를 실행하고 test 진행함
script: test를 진행하는 상황
after_success: 테스트 성공한 후 할 일
코드) .travis.yml 파일 생성
sudo: required
language: generic
services:
- docker
before_install:
- echo "start Creating an image with dockerfile"
- docker build -t jangmj80/docker-react-app -f Dockerfile.dev .
script:
- docker run -e CI=true jangmj80/docker-react-app npm run test -- --coverage
after_success:
- echo "Test Success"
이랬는데 travis ci에 push가 안 나온다..
(plan을 바꿔서 15달러를 결제해야 하는데 실습이니 넘어가도록..)
[2] AWS -- EB 환경 만들기
1. EC2 -- 클라우드에서 확장 가능한 가상 서버 구축, 1대의 컴퓨터 구축
2. EB -- 서비스를 배포하고 확장하는 서비스
[3] Travis CI에서 가지고 있는 소스 코드들을 AWS에 전달해 EB에서 돌아가게 해야 함
> .travis.yml 전체
sudo: required
language: generic
services:
- docker
before_install:
- echo "start Creating an image with dockerfile"
- docker build -t jangmj80/docker-react-app -f Dockerfile.dev .
script:
- docker run -e CI=true jangmj80/docker-react-app npm run test -- --coverage
deploy:
provider: elasticbeanstalk // 외부 서비스 표시
region: "ap-northeast-2" // 현재 사용하고 있는 AWS의 서비스가 위치하는 물리적 장소
app: "docker-app"
env: "Docker-env"
bucket_name: "elasticbeanstalk-ap-northeast-2-5751..."
bucket_path: "docker-app"
on:
branch: main
travis CI가 갖고 있는 파일을 압축해서 S3에 보낸다. 따라서 bucket name을 적어야 함
EB를 생성할때 bucket이 자동으로 생성됨 -> 이 안으로 travis CI가 보낸 파일이 들어감
[4] Travis CI의 AWS 접근을 위한 API 생성
소스 파일 전달을 위한 접근 요건
deploy:
provider: elasticbeanstalk
region: "ap-northeast-2"
app: "docker-app"
env: "Docker-env"
bucket_name: "elasticbeanstalk-ap-northeast-2-575108946475"
bucket_path: "docker-app"
on:
branch: main
access_key_id :$AWS_ACCESS_KEY
secret_access_key: $AWS_SECRET_ACCESS_KEY
처럼 .travis.yml 파일에 AWS의 키를 지정해주고 Dockerfile에 EXPOSE 80으로 port도 열어줘야함
'개발 > Docker' 카테고리의 다른 글
[8] 도커 react, nodejs, db . multi-container (0) | 2025.03.11 |
---|---|
[6] 도커로 간단한 앱 배포하기 (0) | 2025.03.10 |
[5] Docker Compose (0) | 2025.03.10 |
[4] 도커를 이용해 node.js로 어플 만들기 (0) | 2025.03.10 |
[3] 도커 이미지 (0) | 2025.03.09 |