| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- Python
- observability
- karpenter
- 클라우드 엔지니어
- aews
- VPA
- 외부 모듈
- 도커
- 클라우드 국비지원교육 후기
- EKS
- Jenkins
- grafana
- 국비지원교육
- aews vault
- prometheus
- 클라우드 국비지원교육
- k8s
- storageclass
- eks endpoint access
- AWS
- 단기 합격
- aews ci/cd
- keda
- Terraform
- 합격 후기
- kubernetes
- outposts local cluster
- aws outposts
- docker
- POD
- Today
- Total
모험가
github actions와 docker hub를 이용한 CI/CD 본문
APM으로 이루어진 웹 어플리케이션을 구성하였고
전체적인 워크 플로우를 보여드리겠습니다.

설명
1. dockerfile과 deploy.yml 파일을 포함한 코드들을 github에 push한다.
2. deploy.yml 파일을 인지하여 github actions가 자동적으로 빌드를 시작한다.
3. deploy.yml 파일에 도커 허브 로그인 이후 이미지 빌드, 태그 생성, push 순으로 진행
4. AWS beanstalk로 앱을 배포
5. dockerrun.aws.json을 토대로 docker hub에서 이미지를 pull하여 웹 생성
6. AWS elastic beanstalk를 통해 만들어진 웹 인스턴스로 웹에 접속
폴더 안의 내용

사실 각 페이지마다 이미지를 빌드 이후 멀티 컨테이너를 관리하는 방법도 있지만
아직 그러한 능력이 되지 않아 한번에 담아서 배포하였습니다.
우선 github가 인식할 수 있도록
.github 폴더 안에 workflows 폴더 생성
안에 deploy.yml 파일 생성

dockerfile이 인식 되고 카피할 곳은 원하는 곳에 하는 것입니다.
저는 가장 상위 디렉토리에 있는 dockerfile을 실행 시키려고 하였으며
Elastic beanstalk는 이미 생성하고 진행하여서 주석 내용에 다 넣었습니다.
(EB의 플랫폼은 docker입니다.)
dockerfile 작성

저는 php를 이용하였으므로 위와 같은 기본 이미지를 사용하였고
mysql과 연동하기 위해 업데이트, 설치를 진행하였습니다.
이후 전체를 copy하고 80번 포트를 노출시켰습니다.
(컨테이너의 포트와 호스트의 포트를 매핑해야하므로)
dockerrun.aws.json파일의 내용은 몇번의 수정이 있어서 따로 안올리지만
저와 같이 단일 컨테이너를 이용할 것이면 version 1을 사용하고
멀티 컨테이너의 이름을 지정하고 이용할 것이면 docker compose를 이용해도 쉽게 올릴 수 있을 것입니다.
이러한 과정이 끝나면 소스 코드는 준비 끄읕
환경을 준비합니다.
로커에서 자신의 github 레포지토리와 연동하고 github 레포지토리의 환경 변수 값을 바꾸어줍니다.
(도커 허브에 로그인, AWS에 로그인(그에 맞는 정책과 역할은 넣어야 합니다.)

환경 변수 값을 넣으면 환경 설정 끝입니다.
(도커 허브 아이디, 비밀번호
AWS ACCESS_KEY, AWS SECRET_KEY)
이제 로컬에서 git push를 하면 deploy.yml 파일을 인지하여 자동으로 빌드를 실행합니다.



이후 자신의 에플리케이션이 작동하는 것을 확인 가능합니다.

DB의 내용을 RDS로 미리 넣어둔 이후 엔드포인트로 자신의 프론트 엔드와 연결하는 것도 좋습니다.
(보안 그룹을 조심)
'도커' 카테고리의 다른 글
| 도커 (간단한 설치 및 명령어) (0) | 2022.06.15 |
|---|---|
| Docker 간단한 어플을 실제로 배포해보기 (Travis CI 이용 순서) (0) | 2022.06.12 |
| Docker 간단한 어플을 실제로 배포해보기 (github에 소스 코드 올리기) (0) | 2022.06.12 |
| Docker 간단한 어플을 실제로 배포해보기 (개발 환경) (0) | 2022.06.12 |
| 도커 (컨테이너와 로컬 컴퓨터 통신에러 해결) localhost 에러 (0) | 2022.06.09 |