ssafy 1학기와 2학기 중간 기간에 예전에 작업해뒀던 프론트엔드 프로젝트에 백엔드 부분을 스스로 작업해보며 심화적으로 공부중인데, 제가 맡은 파트를 간단하게 발표하기로해서 이렇게나마 정리를 한 번 해봅니다 🙂
저희는 이번에 msa구조
로 프로젝트를 설계하였으며, 제가 백엔드 개발은 물론 프로젝트 배포 및 ci/cd 파이프라인 구축 등 인프라쪽도 함께 담당하게 되었습니다. docker도 사용해본적이 없었고, 항상 모놀라식 구조로 개발해왔던 터라 공부할 게 정~말 많았던 것 같습니다 ..
우선 msa방식으로 프로젝트를 진행하기 위해 기능별로 깃허브 레포지토리를 생성해두었습니다. 이에 따라 각각의 기능을 도커 컨테이너로 띄우기로 하였습니다.
이미 ec2 인스턴스에 서버를 배포해둔 상태이므로, 이 ec2서버에 도커 컨테이너들을 배포하는 작업을 진행하였습니다.
도커 컨테이너를 ec2 서버에 배포하는 과정은 아래와 같습니다. 로컬에서 이미지를 생성하여 ec2 서버에 배포하는 과정을 단계별로 간략하게만 적어뒀는데 혹시나 틀린 게 있다면 .. 알려주세요!
# Dockerfile
FROM openjdk:17
COPY build/libs/*.jar app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]
# -t 도커 레지스트리 주소/이미지 이름:태그 .
docker build -t sunyerim/sunjoo:drinktionary .
docker push sunyerim/sunjoo:drinktionary
Docker-compose를 사용하여 이미지를 다운로드 받고, 컨테이너 실행
sudo docker-compose up -d
# docker-compose.yml
version: '3.8'
services:
auth:
image: sunyerim/sunjoo:auth
container_name: sunjoo-server-auth
restart: always
ports:
- "8080:8090"
networks:
- app-network
redis:
image: redis:latest
container_name: redis
restart: always
ports:
- "6379:6379"
networks:
- app-network
networks:
app-network:
여기에 볼륨 마운트와 같은 설정도 추가하면 되는데, 저는 추후에 작업을 더 진행하면서 작성할 것 같습니다.
사실, 개념들과 구조를 공부하는데 시간이 조금 소요됐지 한 번 해보고 나니까 금방금방하더라구요.
그리고 저희는 Github actions를 사용하여 CI/CD 파이프라인을 구축하였는데, CI/CD 파이프라인은 코드 변경 사항이 자동으로 빌드, 테스트, 배포되는 일련의 과정을 의미합니다.
Jenkins와 Github actions 중 무엇을 써야할지 고민도 많이 했었고, 결국 Github Actions를 채택하여 사용했는데, 추후에 정리를 해보도록 하겠습니다 .🙂
좋은 글 잘 읽었습니다 ^.^7