🐳 Docker
- 컨테이너 기반으로 애플리케이션을 빠르게 실행하고 관리할 수 있는 오픈소스 프로젝트
EC2 를 여러개 생성하려는 경우 각각 node, pm2 등등 초기 설정 및 설치가 반복적으로 필요
Docker 를 사용하여 이러한 번거로움 줄어듬

Dockerfile 을 바탕으로 이미지 빌드
COPY package*.json => 새로 생성될 컨테이너의 루트에 복사
COPY . . => 프로젝트의 모든 파일을 컨테이너 루트에 복사
EXPOSE 3000 => 컨테이너의 포트를 외부에서 접근할 수 있도록
CMD npm run start => 최종적으로 컨테이너에서 실행할 커맨드
DockerHub
AWS Elastic Beanstalk
위 파일이 Elastic Beanstalk 에 전달되면 적절한 도커 이미지를 컨테이너 내부에 올림
Github Action 과 함께 사용하기

name: Deploy To Elastic Beanstalk
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Login to Docker hub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Docker build and push
uses: docker/build-push-action@v2
with:
push: true
context: .
file: ./Dockerfile
tags: ${{ secrets.DOCKERHUB_USERNAME }}/market:latest
- name: Beanstalk Deploy
uses: einaregilsson/beanstalk-deploy@v20
with:
aws_access_key: ${{ secrets.AWS_ACCESS_KEY}}
aws_secret_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
application_name: ${{ secrets.AWS_APPLICATION_NAME }}
environment_name: ${{ secrets.AWS_ENVIRONMENT_NAME }}
version_label: ${{ github.run_id }}
region: ap-northeast-2
deployment_package: Dockerrun.aws.json
actions 가 Dockerhub 에 접근할 수 있도록 하고, Docker 이미지 내용인 Dockerfile 을 build. Dockerhub 에 push
actions 가 beanstalk 에 접근할 수 있도록 하고, Dockerrun.aws.json 파일에서 설정한 Dockerhub 주소의 Docker 이미지 연결 및 컨테이너 포트 생성