참고 서적인 따라하며 배우는 도커와 CI 환경
에서 사용하는 Travis CI를
사용할 수가 없다. 왜냐하면 무료 trial plan이 만료되었기 때문이다.
그래서 포트폴리오에 이미 적용한 GitHub Actions를 활용하여 aws eb에 배포해 보았다.
임시 repo인 도커 ex에서 실습을 해야 되서 기존 포트폴리오에 있는 IAM secret은 활용할 수 없다. 따라서 IAM에서 새로 id와 secret을 발급 받았고 해당 정보를 git repo 내 settings-secret-actions에 기입했다.
도커 파일은 다음과 같다.
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
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!
잘 읽어보면, 배포 할 게 없는데 어떡하라는 거냐고 묻는 것이다.
구글링해보니 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 환경