개발자

Docker compose 컨테이너 구성을 어떻게 될까요?

2024년 01월 28일조회 69

저는 prisma nextjs postgresql을 사용하고 있습니다 Docker compose에서 컨테이너를 local용postgresql, deploy용postgresql, nextapp 이렇게 3개로 구성하려고 합니다 이렇게 해서 npm run dev로 app을 local로 실행한다고 하면 local용 postgresql과 연결되게 하고 Build를 하고 deploy된것은 deploy용postgresql과 연결되게 하려고합니다 해당 프로젝트가 포폴용이라 상관은 없지만, 정말 서비스를 진행하려고하면 서버를 늘리는 일이 일어날텐데 이런경우 위에서 생성했던 docker이미지를 이용해서 docker compose up을 할텐데요 그러면 새로운 서버가 생길때마다 local용 db를 생성할 수 밖에 없을 것 같은데 제가 아직 배포도 안해보고 프론트라서 제가 지금 생각하는 방식이 맞는지 잘 모르겠습니다 혹시 제가 말한게 맞나요?

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 1

백승훈님의 프로필 사진

저도 프론트이지만 최근 해당부분 관련해서 미니PC로 가지고 놀다보니 어느정도 이해가 가더라구요. 일단 Chatgpt 등을 통해 막연하게 만들어가면서 차이점을 보는것도 좋았던 것 같습니다. DB는 예를 들어 posgresql로 구현하셧다면 딱히 코드나 버전이 바뀔일이 없습니다. 15v을 사용했다면 차후 버전업을 하는게 아닌이상 Docker 이미지를 다시 업로드하지 않으며 새로운 서버가 생기지 않습니다. 마찬가지로 작성 중 활용할 db가 2개라면 2개의 도커로 구성하시면 되며 env의 환경변수를 통해 postgresql에 접근하는 주소를 바꿔주시면 될 듯 합니다. 로컬, 개발, 엔터프라이즈 이렇게 3개가 필요하시면 3개를 만들어서 쓰시면 될 듯 합니다.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2024년 01월 28일

Docker Compose를 활용한 컨테이너 구성에 대해 말씀주신 것은 전반적으로 맞습니다만, 상황에 따라서는 몇 가지 추가적인 고려사항들이 있을 수 있습니다. 위에서 언급하신대로 local과 deploy 용 PostgreSQL 서비스를 분리할 때 로컬 개발환경에서는 Docker Compose로 local용 PostgreSQL을 실행시키고, 배포 환경에서는 deploy용 PostgreSQL을 실행시킬 수 있습니다. 단, 실제 서비스를 위한 배포 시나리오에서 추가로 고려해야 할 부분은 데이터의 영속성입니다. new server가 생길 때마다 새로운 DB 인스턴스를 생성하는 것보다는 별도의 데이터 저장소(DB instance)를 유지하고 이것을 사용하는 방식이 일반적입니다. 이렇게 하면 서버가 추가되거나 제거될 때 데이터가 손실되지 않습니다. 또한 Docker Compose 파일 내의 environment / env_file 항목을 활용하여 로컬 개발 환경과 배포 환경의 DB 연결 정보(URL, user, password 등)를 다르게 설정해줄 수 있습니다. 이렇게 하면 같은 이미지를 사용하더라도 환경변수에 따라 작동 방식이 변경되어, 각각 적절한 DB와 연결할 수 있습니다. 마지막으로, 서비스를 진행하게 될 때는 보통 단일 서버보다 여러 서버(e.g., Kubernetes cluster)에서 컨테이너를 관리하는 측면도 고려해야 합니다. 이럴 경우 Docker Compose로의 배포보다는 Kubernetes와 같은 orchestration tool을 사용하는 것이 일반적입니다. 그래서, 배포에 대한 고민이 있다면 Docker와 함께 Kubernetes에 대해서도 알아보시는 것을 추천드립니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!