본문 바로가기

docker

9-1. github action, Dockerrun.awe.json, VPC, Security Group

따라하며 배우는 도커와 CI환경

 

github action

name: Deploy FullStackApp
on:
  push:
    branches:
      - main 

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      # 도커 로그인
      - run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
      # 프론트엔드 테스트를 위한 빌드
      - run: docker build -t nathaneast/react-test-app -f ./frontend/Dockerfile.dev ./frontend
      # 프론트엔드 테스트 스크립트 실행
      - run: docker run -e CI=true nathaneast/react-test-app npm test
      # 소스코드 빌드
      - run: docker build -t nathaneast/docker-frontend ./frontend
      - run: docker build -t nathaneast/docker-nginx ./nginx
      - run: docker build -t nathaneast/docker-backend ./backend
      
      # 도커 허브로 이미지를 전송
      - run: docker push nathaneast/docker-frontend
      - run: docker push nathaneast/docker-nginx
      - run: docker push nathaneast/docker-backend

      - name: Generate deployment package
        run: zip -r deploy.zip . -x '*.git*'
        
      # AWS EB에서 도커 허브에있는 이미지 가져온 후 배포
      # 이미지에서 빌드가 되었기 때문에 빌드하지 않음
      - name: Deploy to EB
        uses: einaregilsson/beanstalk-deploy@v18
        with:
          aws_access_key: ${{ secrets.AWS_ACCESS_KEY }}
          aws_secret_key: ${{ secrets.AWS_SECRET_KEY }}
          application_name: fullstack-ex-app
          environment_name: Fullstack-ex-app-env
          existing_bucket_name: elasticbeanstalk-ap-northeast-2-992382706228
          region: ap-northeast-2
          version_label: ${{ github.sha }}
          deployment_package: deploy.zip

Dockerrun.awe.json

- 도커 파일이 다수 있을경우 어떤 파일을 먼저 실행, 행동 취할건지, 설정 등  코드로 명시

- 멀티컨테이너 도커 환경에서 사용

 

Dockerrun.awe.json

  • essential: 컨테이너가 실패한경우 작업 중지 여부

VPC

  • AWS 클라우드 공간에서 공간을 격리하는것
  • AWS RDS에서 나의 소스코드 데이터 베이스와 연결해야 통신 가능함
  • 인스턴스에서 해당 계정만 접근 가능하도록 함
  • EB, rds 생성시 자동으로 VPC 생성되고 지역별로 다르게 할당 됨 

Security Group

  • EC2, EB와 같은 인스턴스 인바운드, 아웃바운드 사이 방화벽을 둠
  • 인바운드, 아웃바운드를 통제함

p.s)

- 인바운드: 인스턴스로 요청을 받는것 (HTTP, HTTPS, SSH)

- 아웃바운드: 인스턴스에서 외부로 응답을 하는것 (파일 다운로드, 트래픽 처리 후 응답)

EB, RDS 통신 설정

  • VPC, Security Group 사용하여 EB, RDS 통신 가능하도록 설정
  • 같은 VPC안에 있는 AWS 서비스는 트래픽을 모두 허용할 수 있도록 보안그룹을 설정해줌

적용방법

  • VPC에서 보안 그룹 생성 -> RDS, EB에서 생성한 보안 그룹 추가
  • EB에서 컨테이너들이 RDS 환경변수 인식 가능하도록 설정
    • DB 호스트, 유저, 패스워드, 포트 등

'docker' 카테고리의 다른 글

9-2. docker AWS EB, RDS, VPC, IAM 실습  (0) 2024.06.24
8. docker FE, BE, mysql, nginx 실습  (0) 2024.06.13
7. docker, aws, github action 실습  (0) 2024.06.09
5. docker compose  (0) 2024.05.15
4. node.js로 도커 실행 실습  (0) 2024.05.06