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
- 도커 파일이 다수 있을경우 어떤 파일을 먼저 실행, 행동 취할건지, 설정 등 코드로 명시
- 멀티컨테이너 도커 환경에서 사용
- 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 |