1. 도커 파일 작성
그냥 Docker만 생성하면 bcrypt 관련해서 오류가 생기기 때문에
.dockerignore 파일을 만들어 node_modules를 추가해준다.
Dockerfile 작성
FROM node:16
WORKDIR /app
COPY package*.json ./
RUN npm install
RUN npm install bcrypt@latest --save
COPY . .
CMD ["npm", "run", "start"]
docker-compose.yml 작성
.env를 그대로 가져가서 docker 컨테이너를 만든다.
version: '3.1'
services:
mysql:
env_file:
- .env
image: mysql:5.7
ports:
- '3306:3306'
app:
ports:
- 80:5000
build: .
depends_on:
- mysql
코드는 이 블로그를 많이 참조했다.
아래 코드를 실행한 후
docker build -t docker-app .
아래 코드를 실행했을 때
docker-compose up -d
docker ps
아래와 같이 두개의 파일이 돌아간다면 성공이다.
2. AWS 환경 속성 설정
Elastic Beanstalk -> 구성 -> 소프트웨어의 환경속성에 .env에 써있는 값을 그대로 가져온다.
특히 MYSQL_HOST에는 RDS의 엔드포인트를 쓰는것에 주의한다.
3. Github에 AWS_SECRET_KEY 넣기
레포지토리 -> Secret and variables -> New repository secret에
AWS_ACCESS_KEY_ID와 AWS_SECRET_ACCESS_KEY를 설정해준다.
4. Github Action flow 작성
파일이 있는 최상위 디렉토리에 .github파일을 만든 뒤 그 안에 workflows 파일을 만든다.
그 안에 release.yml파일 생성
name: release app
on:
push:
branches:
- 'main'
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout source code
uses: actions/checkout@v3
- name: Generate deployment package
run: zip -r ${{ github.sha }}.zip . -x "*.git*" node_modules
- name: Deploy to EB
uses: einaregilsson/beanstalk-deploy@v20
with:
aws_access_key: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws_secret_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
application_name: [AWS 어플리케이션 이름]
environment_name: [AWS 어플리케이션 환경 이름]
version_label: ${{ github.sha }}
version_description: ${{ github.event.head_commit.message }}
region: ap-northeast-2
deployment_package: ${{ github.sha }}.zip
actions/checkout@v2는 deprecate되었기 때문에 actions/checkout@v3를 써준다.
이때 어플리케이션 이름과 어플리케이션 환경 이름을 틀리지 않도록 주의한다.
'DevOps' 카테고리의 다른 글
AWS SAA C03 덤프 오답 정리 (100 ~ 200) (0) | 2024.01.26 |
---|---|
AWS SAA C03 덤프 오답 정리 (0 ~ 100) (0) | 2024.01.16 |
github-action에서 변화된 모든 commit message를 추출하는 방법 (0) | 2023.07.23 |
Docker와 Git Action을 이용한 AWS배포 (3) (0) | 2023.02.21 |
Docker와 Git Action을 이용한 AWS배포 (1) (0) | 2023.02.21 |