도커, GitHub actions, elastic beanstalk 실습

dasd412·2022년 3월 14일
0

포트폴리오

목록 보기
33/41
post-custom-banner

문제 사항

참고 서적인 따라하며 배우는 도커와 CI 환경에서 사용하는 Travis CI를
사용할 수가 없다. 왜냐하면 무료 trial plan이 만료되었기 때문이다.

그래서 포트폴리오에 이미 적용한 GitHub Actions를 활용하여 aws eb에 배포해 보았다.

AWS IAM에서 사용자 secret 획득하기

임시 repo인 도커 ex에서 실습을 해야 되서 기존 포트폴리오에 있는 IAM secret은 활용할 수 없다. 따라서 IAM에서 새로 id와 secret을 발급 받았고 해당 정보를 git repo 내 settings-secret-actions에 기입했다.

도커와 eb 세팅은 책과 거의 동일.

도커 파일은 다음과 같다.

FROM node:alpine as builder

WORKDIR '/usr/src/app'

COPY package.json .

RUN npm install

COPY ./ ./

RUN npm run build 

EXPOSE 80

FROM nginx

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

GitHub Actions yml 작성하기

"실패하는" yml (오류 발생)

name: Docker Image CI

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:

  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: before install 
      run: docker build -t dasd412/docker-react-app -f Dockerfile.dev .
    
    - name: test code processing
      run: docker run -e CI=true dasd412/docker-react-app npm run test -- --coverage
    
    - name: Deploy to elastic beanstalk 
      uses: einaregilsson/beanstalk-deploy@v14 
      with: 
        aws_access_key: ${{ secrets.AWS_ACCESS_KEY_ID }} 
        aws_secret_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} 
        application_name: docker-react-app 
        environment_name: Dockerreactapp-env
        region: ap-northeast-2
        version_label: test-docker

발생했던 에러

위 yml 파일은 다음과 같은 오류를 뱉어 낸다.
deployment failed: no deployment package given but version test doesn't exist, so nothing to deploy!

잘 읽어보면, 배포 할 게 없는데 어떡하라는 거냐고 묻는 것이다.

"제대로 작동하는" yml

구글링해보니 deployment_package: ~~~.zip을 기재하고 있었다.
그런데, 도커 관련 파일을 어떻게 해야 할까 의문이 생겼다. 하지만 의외로
답은 간단했다.

- name: generate deployment pacakge run: zip -r deploy.zip .
스크립트를 추가해서 현재 디렉토리를 압축한 후, 이름을 지정해주면 됬다.

그리고 엘라스틱 빈스톡에 배포할 때 deployment_package: deploy.zip으로 명시해주었다.

name: Docker Image CI

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:

  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: before install 
      run: docker build -t dasd412/docker-react-app -f Dockerfile.dev .
    
    - name: test code processing
      run: docker run -e CI=true dasd412/docker-react-app npm run test -- --coverage
    
    - name: generate deployment pacakge
      run: zip -r deploy.zip .
    
    - name: Deploy to elastic beanstalk 
      uses: einaregilsson/beanstalk-deploy@v14 
      with: 
        aws_access_key: ${{ secrets.AWS_ACCESS_KEY_ID }} 
        aws_secret_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} 
        application_name: docker-react-app 
        environment_name: Dockerreactapp-env
        region: ap-northeast-2
        version_label: test-docker
        deployment_package: deploy.zip

참고 자료

https://donghunee.github.io/study/2021/03/23/docker/
따라하며 배우는 도커와 CI 환경

profile
SW 마에스트로 14기 (스타트업 재직중)
post-custom-banner

0개의 댓글