도커 9주차

ggomadev·2024년 6월 10일
0

도커

목록 보기
9/9
post-thumbnail

따라하며 배우는 도커와 CI환경 수강 및 실습하면서 정리한 내용입니다.

.travis.yml

Dockerrun.aws.json파일

Dockerfile 하나일 때는 EB(Elastic Beanstalk)이 알아서 이미지를 처리
Dockerfile이 여러 개일 때(멀티 컨테이너)는 별도 설정 필요 -> Dockerrun.aws.json

Task Definition(작업정의): Task에 어떻게 컨테이너를 실행할지 정의해주는 것. 이 때 Container Definition을 명시해줄것! -> 도커 데몬이 알아서 처리해준다

  • essential: nginx의 경우 문제가 생기면 프론트 백 둘다 작동이 안 되기 때문에 중요하므로 true, 나머지는 false로 설정.

RDS

docker-compose.yml

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

Security Group

  • inbound: 외부에서 방화벽(Security Group)을 통해 들어오는 것 <-> outbound
  • VPC -> 보안그룹 -> 규칙설정 -> 포트, 추가한 보안그룹(DockerSecurityGroup) 선택

EB 인스턴스와 RDS가 서로 소통할 수 있도록 보안그룹 설정

RDS를 위한 Security Group 설정

  • 수정 클릭

  • 추가한 보안그룹(DockerSecurityGroup) 추가 이후 즉시적용 선택

EB 인스턴스를 위한 Security Group 설정

elastic beanstalk -> 구성에서

환경변수 셋팅

먼저 RDS -> 데이터베이스 -> 연결 및 보안 -> 엔드포인트 및 포트에서 엔드포인트 복사

docker-compose.yml에 작성한대로 환경속성 추가
MYSQL_HOST 값은 는 복사한 엔드포인트을 넣어준다.

.travis.yml 파일 배포부분

.travis.yml

  • app, bucket_path:

  • bucket_name: aws s3

인증(Travis CI가 AWS에 접근가능하도록)

  • IAM -> 사용자 추가해서 액세스 키, 비밀 액세스 키 받기
  • .travis.yml에 추가

github action

.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

실습 오류

  1. axios 버전

axios 버전 문제로 package.json에 있는 axios 버전을 낮췄더니 해결됨

  1. github actions -> aws 403 에러

처음 배포했을 때 403 에러가 났었는데 bucket_name을 이전 인스턴스의 엔드포인트로 수정하지 않았어서 난 에러였음

참고

https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/migrate-to-ec2-AL2-platform.html

0개의 댓글