강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

김태환님의 프로필 이미지
김태환

작성한 질문수

비전공자도 이해할 수 있는 Docker 입문/실전

[실습] 백엔드 프로젝트(Spring Boot) 프로젝트를 Docker로 실행시키기

빌드 환경의 일관성 유지를 위해 컨테이너 안에서 빌드

작성

·

24

·

수정됨

0

안녕하세요 강사님, 강의 잘 듣고 있습니다!

도커 컨테이너의 사용 목적이 로컬 환경과 테스트/배포 환경에서도 일관성 있게 프로그램이 동작하는 것을 보장하기 위함이라면, 스프링 프로젝트의 빌드 명령도 컨테이너 안에서 수행하는 것도 괜찮을까요?

다만 jdk까지 포함하게 되어서 도커 이미지의 용량도 그만큼 커질 것이라고 생각은 했지만, 이로 인해 인스턴스의 비용이 크게 증가하는 건 아닐 것 같아서 고민이 되어 문의 드립니다!

다시 한 번, 좋은 강의 들을 수 있게 해주셔서 감사합니다~!

답변 2

0

JSCODE 박재성님의 프로필 이미지
JSCODE 박재성
지식공유자

안녕하세요 태환님! 질문 너무 잘해주셨어요 !

질문해주신 내용에 대해 답변드려볼게요 !

 

"스프링 프로젝트의 빌드 명령도 컨테이너 안에서 수행하는 것도 괜찮을까요?"

-> 네 괜찮습니다 ! 말씀해주신 것처럼 빌드 환경도 컨테이너 안에서 통일하면 개발자마다 JDK 버전 차이나 로컬 환경 차이로 인한 문제를 줄일 수 있어요! 그래서 실무에서도 build stage를 따로 두고, 컨테이너 안에서 빌드하는 방식을 종종 사용해요 :)

 

"jkd까지 포함하게 되어 인스턴스 비용이 크게 증가하는건 아닐까요 ?"

-> 도커 이미지 용량으로 인한 비용 증가는 거의 없다고 보시면 됩니다 !

EC2 인스턴스 비용은 이미지 용량과 무관하고,

EBS 저장 비용도 300MB 차이가 월 $0.03(약 40원) 수준이에요 ~

또한 네트워크 전송비도 초기 1회 pull/push 시에만 발생하고 레이어 캐싱으로 최소화돼요:)

 

추가로 궁금하신 점 있으시면 또 질문 남겨주세요~~

0

안녕하세요, 인프런 AI 인턴입니다. 김태환님.

Docker 컨테이너를 활용하여 로컬 환경과 운영 환경에서의 일관성을 유지하려는 목적은 매우 중요합니다. 질문 주신 내용에 대한 몇 가지 고려사항과 해결책을 이야기해 드리겠습니다.

스프링 프로젝트의 컨테이너 내 빌드

  1. 컨테이너 내 빌드 접근법:

    • 스프링 프로젝트를 Docker 컨테이너 안에서 빌드하게 되면, 실행 환경과 완전히 동일하게 관리할 수 있다는 장점이 있습니다.
    • 컨테이너 내에서 빌드를 수행할 경우, 개발 환경과 운영 환경의 차이를 최소화하며, 각 환경의 비일관성 문제를 필연적으로 줄일 수 있습니다.
  2. JDK 포함 및 이미지 사이즈:

    • JDK를 포함하여 이미지를 빌드하면 이미지의 크기가 다소 클 수 있습니다. 그러나 이는 클라우드 환경에서 큰 문제가 되지 않습니다.
    • Docker 레이어 캐싱이나 멀티스테이지 빌드를 활용하면 불필요한 크기 증대를 줄일 수 있습니다. 예를 들어, 빌드에 필요한 JDK와 배포에 필요한 JRE를 분리하여 빌드할 수 있습니다.
  3. 비용 고려:

    • 일반적으로 도커 이미지의 볼륨이 비용에 큰 영향을 미치지는 않습니다. 실제 인스턴스의 비용은 주로 CPU, 메모리, 네트워크 사용량에 영향을 받습니다.
    • 그러나, 빌드 및 테스트 프로세스를 최적화하여 효율성을 높이는 것은 언제나 좋은 접근입니다.

제안

  • 멀티스테이지 빌드 활용: 빌드와 실행 환경을 분리하여 최종 이미지를 작게 유지하는 방안을 고려해보세요. 이는 Dockerfile 내에서 여러 단계를 정의하여 사용하는 방법입니다.
  • 컨테이너 환경에서의 테스트 및 실행: 모든 개발 및 테스트 단계를 컨테이너 내에서 하여, 실제 배포 환경에서의 불일치 문제를 감소시킬 수 있습니다.

참고 자료

유사한 질문과 더 많은 팁은 아래 링크에서 확인하실 수 있습니다:
- 도커 이미지 생성 및 소스 빌드에 관한 질문입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

김태환님의 프로필 이미지
김태환

작성한 질문수

질문하기