따라하며 배우는 도커와 CI환경 수강 및 실습하면서 정리한 내용입니다.
Dockerfile 하나일 때는 EB(Elastic Beanstalk)이 알아서 이미지를 처리
Dockerfile이 여러 개일 때(멀티 컨테이너)는 별도 설정 필요 -> Dockerrun.aws.json
backend:
environment:
MYSQL_HOST: mysql
MYSQL_USER: root
MYSQL_ROOT_PASSWORD: jamie123
MYSQL_DATABASE: myapp
MYSQL_PORT: 3306
MYSQL_ROOT_PASSWORD
MYSQL_USER
MYSQL_HOST
EB 인스턴스와 RDS가 서로 소통할 수 있도록 보안그룹 설정
elastic beanstalk -> 구성에서
먼저 RDS -> 데이터베이스 -> 연결 및 보안 -> 엔드포인트 및 포트에서 엔드포인트 복사
docker-compose.yml에 작성한대로 환경속성 추가
MYSQL_HOST 값은 는 복사한 엔드포인트을 넣어준다.
.travis.yml
app, bucket_path:
bucket_name: aws s3
.github > workflows > deploy.yaml
name: Deploy FullStackApp
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Log in to Docker Hub
run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
- name: Build frontend for tests
run: docker build -t jamieecode/react-test-app -f ./frontend/Dockerfile.dev ./frontend
- name: Run frontend tests
run: docker run -e CI=true jamieecode/react-test-app npm test
- name: Build Docker images
run: |
docker build -t jamieecode/docker-frontend ./frontend
docker build -t jamieecode/docker-backend ./backend
docker build -t jamieecode/docker-nginx ./nginx
- name: Push Docker images
run: |
docker push jamieecode/docker-frontend
docker push jamieecode/docker-backend
docker push jamieecode/docker-nginx
- name: Generate deployment package
run: zip -r deploy.zip . -x '*.git*'
- name: Deploy to Elastic Beanstalk
uses: einaregilsson/beanstalk-deploy@v18
with:
aws_access_key: ${{ secrets.AWS_ACCESS_KEY }}
aws_secret_key: ${{ secrets.AWS_SECRET_KEY }}
application_name: fullstack-docker-app
environment_name: Fullstack-docker-app-env
existing_bucket_name: elasticbeanstalk-ap-northeast-2-533267259028
region: ap-northeast-2
version_label: ${{ github.sha }}
deployment_package: deploy.zip
axios 버전 문제로 package.json에 있는 axios 버전을 낮췄더니 해결됨
처음 배포했을 때 403 에러가 났었는데 bucket_name을 이전 인스턴스의 엔드포인트로 수정하지 않았어서 난 에러였음
https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/migrate-to-ec2-AL2-platform.html