1. 가장 신경 쓴 부분
- 7주차 클론프로젝트를 진행하면서 가장 신경 쓴 부분은 첫째로 완성도였습니다. 무리하게 기능적으로 스코프를 넓힐게 아니라 FE와 협업을 해서 완성도를 높이는데에 초점을 맞췄습니다. 그러다보니 추가로 자동배포를 집중적으로 학습하고 실행에 옮길 수 있게 되었습니다.
2. 기술에 대한 정리
- github action & docker 를 이용한 자동 배포
- Docker file 추가
- FROM 명령어 부분 : Docker 버전을 Docker hub 내에서 필요한 자원을 검색해서 가져온다.
- COPY 부분 : Project 내 build 파일 안의 lib 내에 있는 파일을 복사해서 넣어서 이미지화 시켜준다.
- Build 확인 후 lib 파일 내에 jar 파일을 Dockfile 내의 jar 파일과 같은지 확인 해준다.
- Docker hub에서 유저 생성 후 repository 생성 (docker image가 올라가는 저장소)
- 전체 과정을 말하자면 github action에서 build -> docker image를 생성 -> docker hub에 image 업로드
→ 이것을 EC2에서 가져와서 구동해준다. - deploy.yml : git actions에서 New workflow 생성 -> gradle 빌드하는 내용 정의 (파일 이름 자유 ex= main.yml)
- on : 언제 실행이 되는지의 조건을 나타내준다. (main branch에 push 혹은 pull request가 발생할 때)
- permission : 이 repository를 읽을 수 있게 해주는 permission (수정 권한)
- build : 아래 내용의 과정에 대한 이름
- Settins - Actions - New repository secret (사전에 key 등록)
- APPLICATION_PROPERTIES / AWS_HOST_ADDRESS / DOCKERHUB_TOKEN / AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY / DOCKERHUB_USERNAME / SSH_PRIVATE_KEY 추가
- Private key에 맞는 ubuntu 실행 후 -> EC2 서버에 Docker 설치
# 전체적인 flow
EC2 서버 생성 → ssh private key에 맞는 ubuntu 실행
docker 설치(스크립트 따라서) → github actions의 secret에 필요한 파일들 추가(도커허브 토큰, properties 등등) → main.yml 내의 프로젝트 명들을 바꿔준다.
→ resource 파일이 없다고 에러가 뜨면 run: 아래 부분에 mkdir clone-backend(repository명)/src/main/resources 명령어 추가하고 start commit 클릭
→ gradlew 오류는 디렉토리 구조의 문제로 에러가 날 수가 있다. → 웬만해서는 작업할 때 test를 하면서 진행을 해야한다.
'etc > Weekend, I Learned' 카테고리의 다른 글
항해99 10주차 WIL(서버 Timezone 설정오류 트러블슈팅) (0) | 2022.11.29 |
---|---|
항해99 8주차 WIL(github action & docker 자동배포 트러블슈팅) (0) | 2022.11.15 |
항해99 5주차 WIL(CORS) (0) | 2022.10.24 |
항해99 4주차 WIL(ORM, Object Relational Mapping 객체관계매핑) (0) | 2022.10.17 |
항해99 3주차 WIL(DI란 무엇인가?) (0) | 2022.10.10 |