해결된 질문
작성
·
213
1
안녕하세요 우선 끝까지 강의 잘들었습니다!!! docker 부분이 아직 익숙하지 않아 질문드립니다
docker를 따라 설치하니 저장소 같은 곳에 이미지가 저장되는 것을 확인하였습니다.
해당 이미지를 aws 인스턴스에서 받아서 바로 사용할 순 없는건가요? -> 굳이 git clone으로 프로젝트를 받아와야 하는지 궁금합니다 / docker 저장소에 이미지를 올리고 바로 받아서 실행하면 되는게 아닌가 싶어서 질문드립니다...
2.가 만약 틀린거라면 build/libs에 있는 파일이 직접적으로 실행을 시키면서 애플리케이션이 실행되는 것 같은데 이 이미지를 굳이 docker 저장소에 올리는 이유가 궁금합니다.
답변 1
0
안녕하세요. 지식공유자 쥬쥬입니다 !
말씀하신대로, 일반적인 컨테이너 서비스를 배포하는 것은 다음과 같은 Flow를 따릅니다.
CI 과정에서 애플리케이션을 빌드하고 Contianer Image Registry(ECR, Docker Hub등)에 저장합니다
배포되어있는 컨테이너 오케스트레이션 서비스(k8s)등의 이미지 태그를 [1]번에서 사용한 것으로 바꾸어줍니다 (k8s deploy, default : rolling update)
EC2와 같이 컴퓨팅 인스턴스에서 사용하는 배포 Flow는 다음과 같습니다.
Java가 설치된 EC2 인스턴스를 템플릿을 준비합니다.
CI/CD 배포도구 (CodePipline 등)을 이용해 애플리케이션을 빌드하고 새로운 EC2 인스턴스를 띄우며 새로운 버전의 jar파일을 실행하도록 합니다.
기존 EC2 인스턴스를 지우며 새 버전의 애플리케이션이 띄워져 있는 EC2로 교체해줍니다
위와 같은 Flow를 현재 입문용 강의에서는 구현이 어렵다고 판단해, 소스가 원격 저장소에서 새로운 애플리케이션을 가져와 손쉽게 배포하기 위해서는 원격 인스턴스에서 git pull & docker build를 이용해 서버를 띄우는 것이 가장 간단하다고 판단해 강의를 이렇게 제작하게 되었습니다.
현업에서 사용하는 배포 도구와 과정이 궁금하신다면, 여러가지 유용하신 링크를 공유드립니다.
ArgoCD (k8s 배포 도구) : https://argoproj.github.io/cd/
CodePipeline (EC2 배포 도구) : https://docs.aws.amazon.com/ko_kr/codepipeline/latest/userguide/welcome.html
배포 파이프라인을 캡슐화한 서비스인 AWS Elastic Beanstalk도 입문과정에서 많이 사용하시는 것 같습니다.
감사합니다 !
답변 감사합니다! 두리뭉술하게 질문드렸는데 자세하고 많은 자료까지 답변해주셔서 감사합니다!