본문 바로가기
개발/Docker

[7] 도커와 Github

by 민지기il 2025. 3. 10.

[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