• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    해결됨

안녕하세요 선생님, 5강까지 수강한 시점에서 질문드리고 싶습니다.

24.05.06 23:59 작성 24.05.07 00:02 수정 조회수 71

1

안녕하세요 선생님, 현재 선생님께서 예제로 올려주신 파일이 아닌 제 프로젝트에 적용하며 수강하고 있는 학생입니다.

도커 이미지를 빌드할 때 멀티 스테이징 기법을 사용하는 이유는 빌드할 때 사용하는 모듈들이 애플리케이션을 실행할 때 사용하는 환경에서는 필요없기 때문에 빌드 이미지와 실행 이미지를 나누어 최종적으로 빌드되는 실행 이미지에서 gradle과 같은 무거운 부분들을 떼내기 위해서라고 이해하였습니다.

만약 그렇다면 최종적인 이미지에는 yml에 들어있는 private key같은 보안값들이 들어있지 않는 것으로 이해되는데, yml이 최종 이미지에 들어있지 않음에도 보안값들을 환경변수로 전달해야 하는 이유를 알고 싶습니다.

원래 추후 git actions등을 사용하여 깃허브에 push만 하면 자동으로 빌드 후 배포까지 되게끔 파이프라인을 구축할 때 깃허브에는 yml이 올라가있지 않기 때문에 깃허브에는 환경변수를 사용한 yml을 올려두고 강의내용대로 환경변수로 전달하는 과정까지 자동화하는구나 라고 이해하였는데, ChatGPT에서는 멀티스테이징 기법을 사용하더라도 이미지 빌드과정 자체에서 yml을 포함하지 않아야 보안상에 문제가 없다고 하여 질문드립니다.

추가적으로 차후 강의를 들으면 해결될 궁금증 같지만, 현재 제 프로젝트에는 프론트엔드는 다른 VM을 통한 서버가 올라가있고, 데이터베이스 또한 따로 RDS에 올라가있는데 이럴 때는 간단히 스프링 애플리케이션만 이미지로 빌드하여 서버 VM(EC2)에 배포하고, 수작업으로 https 프로토콜 인증 작업만 진행하면 되는지 또한 여쭤보고 싶습니다.

친절한 강의 해주셔서 감사합니다.

답변 1

답변을 작성해보세요.

0

김교휘님 안녕하세요. 데브위키입니다.

이미지 빌드과정 자체에서 yml을 포함하는 것이 보안상 문제가 있다는 것은 틀린 정보 같습니다. 보통은 yml 파일을 포함하며, 환경변수로 값을 주입 하는 것이 안전한 방식입니다. 말씀해주신 깃허브에는 환경변수를 사용한 yml을 올려두고 빌드하시는 방식이 맞습니다! yml이 최종 이미지에 들어있지 않을 경우 애플리케이션이 정상적으로 실행되지 않을 것입니다.

추가로 실무 파트에서 3Tier애플리케이션을 수강하시면 3개의 서버를 활용하는 방식에 인사이트를 얻으실 수 있으실 것입니다. 이와 별도로 https 인증 작업은 도메인과 인증서 구매가 필요합니다. 🙂