본문 바로가기
Jetbrains

PyCharm과 Docker Compose로 끝내는 파이썬 멀티 컨테이너 개발 환경 완벽 가이드

by CodeByJin 2026. 3. 27.
반응형

새로운 프로젝트를 시작할 때 가장 먼저 맞닥뜨리는 벽이 바로 '환경 설정'입니다. 내 컴퓨터에서는 파이썬 3.11로 잘 돌아가는데, 옆 자리 동료의 PC에서는 라이브러리 버전이 꼬여서 에러가 나거나, 로컬에 설치된 Redis 설정이 달라서 통신이 안 되는 상황, 다들 한 번쯤 겪어보셨을 거예요. 사실 이 부분이 개발 시작 전부터 힘을 다 빼놓는 가장 번거로운 과정이죠.
 
막상 해결책을 찾아보면 '컨테이너화'가 답이라고들 하지만, 터미널에서 매번 명령어를 치는 건 또 다른 숙제처럼 느껴집니다. 하지만 PyCharm Professional과 Docker Compose를 조합하면, 마치 내 컴퓨터에 직접 설치된 파이썬을 쓰듯 아주 쾌적하게 멀티 컨테이너 환경을 주무를 수 있습니다. 오늘은 그 핵심 비결을 정리해 드릴게요.

개발 시작 전, 이것만은 꼭 체크하세요

설정을 시작하기 전에 아래 세 가지 조건이 갖춰졌는지 확인이 필요합니다. 개인적으로 이 준비 단계에서 버전 확인을 소홀히 하면 나중에 원인 모를 연결 오류로 고생하게 된다고 생각합니다.

  • Docker Desktop 실행 확인: 윈도우나 맥 사용자라면 Docker Desktop이 'Green' 상태인지 먼저 보세요. 의외로 이걸 깜빡하고 PyCharm 설정만 만지는 경우가 많습니다.
  • PyCharm Professional 에디션: 아쉽게도 커뮤니티(Community) 버전은 원격 인터프리터 기능이 제한적이라 이 기능을 온전히 쓰기 어렵습니다. 유료 버전의 가치를 가장 크게 느끼는 지점이 바로 여기죠.
  • 프로젝트 파일 구조: 루트 디렉토리에 Dockerfiledocker-compose.yml이 미리 작성되어 있어야 합니다.

한눈에 보는 핵심 설정 프로세스

복잡한 용어 대신, 어떤 순서로 일이 진행되는지 표로 먼저 정리해 보았습니다. 표를 보면 아시겠지만, 사실 3단계 '인터프리터 연결'이 이 작업의 80%를 차지하는 가장 중요한 구간입니다.

단계주요 작업이유 (Why)
1. Docker 연결Settings > Docker 설정PyCharm이 내 컴퓨터의 Docker 엔진을 제어할 권한을 얻기 위해서입니다.
2. YAML 파일 검증docker-compose.yml 작성앱과 DB(Redis 등)가 서로 어떤 이름으로 통신할지 미리 정의하는 설계도입니다.
3. 인터프리터 등록Python Interpreter 추가코드 실행을 로컬 PC가 아닌 '컨테이너 내부'의 파이썬에게 맡기기 위함입니다.
4. 서비스 선택web 또는 app 서비스 지정여러 컨테이너 중 실제 내 코드가 돌아갈 메인 환경을 특정해야 합니다.

실전! PyCharm과 Docker를 하나로 묶기

이제 본격적으로 설정을 시작해 볼까요? 우선 PyCharm 설정창(Ctrl+Alt+S)에서 Build, Execution, Deployment > Docker로 들어갑니다. 여기서 + 버튼을 눌러 내 OS에 맞는 Docker 시스템을 연결해 주세요. "Connection successful"이라는 메시지가 떴다면 일단 첫 단추는 잘 꿰어진 겁니다.

 

그다음이 핵심입니다. 프로젝트 인터프리터 설정에서 Add Interpreter를 누르고 Docker Compose를 선택하세요. 이때 Configuration 파일로 미리 만들어둔 docker-compose.yml을 지정하면 PyCharm이 파일 내부를 슥 훑어서 서비스 목록을 보여줍니다. Flask나 Django가 돌아갈 'web' 서비스를 골라주시면 됩니다.

 
이건 모르면 손해 보는 꿀팁인데, 이때 'Python interpreter path'는 웬만하면 기본값 그대로 두세요. 괜히 컨테이너 내부 경로를 수동으로 잡으려다 꼬이는 경우가 많거든요. PyCharm은 생각보다 똑똑해서 이미지 내부의 파이썬 위치를 아주 잘 찾아냅니다.

경험자가 말하는 "이건 주의하세요"

설정은 다 끝났는데 막상 실행하면 안 되는 경우, 열에 아홉은 '포트 충돌'이나 '볼륨 매핑' 문제입니다. 저도 처음엔 이 부분 때문에 며칠을 헤맸던 기억이 나네요.

  • 로컬 포트 점유: 이미 내 컴퓨터에 Redis가 설치되어 6379 포트를 쓰고 있다면, Docker 컨테이너의 Redis는 띄워지지 않습니다. docker-compose.yml에서 "6380:6379"처럼 로컬 포트를 살짝 비껴가게 설정하는 유연함이 필요합니다.
  • 코드 수정 반영: 코드를 고쳤는데 컨테이너에 반영이 안 된다면? volumes 설정에서 .:/app 처럼 로컬 디렉토리와 컨테이너 디렉토리가 제대로 동기화되고 있는지 확인하세요. 마치 거울을 보는 것처럼 로컬의 변화가 컨테이너에 즉시 비쳐야 합니다.
  • 네트워크 이름: 컨테이너끼리 통신할 때는 localhost가 아니라 서비스 이름(예: redis, db)을 호스트명으로 써야 합니다. 이건 마치 아파트 호수 대신 거주자 이름을 부르는 것과 비슷해요.

솔직히 말씀드리면, 초기 설정은 귀찮지만 한 번 잡아두면 '환경 탓'하며 시간 버리는 일이 아예 사라집니다. 마치 잘 닦인 고속도로를 달리는 기분을 느끼실 수 있을 거예요.

최적의 개발 생산성을 위한 생각

단순히 실행만 하는 게 목적이라면 터미널에서 docker-compose up만 쳐도 충분하겠죠. 하지만 우리가 PyCharm을 쓰는 진짜 이유는 '디버깅' 때문입니다. PyCharm의 벌레 모양 아이콘(Debug)을 누르면 컨테이너 안에서 돌아가는 코드의 특정 지점을 멈춰 세우고 변수 값을 하나하나 들여다볼 수 있습니다. 이 경험은 마치 투명 인간이 되어 기계 내부를 구석구석 살피는 것과 같은 통찰력을 줍니다.

 

또한, 협업 측면에서도 엄청난 이점이 있습니다. .idea 폴더 설정만 잘 공유하면(혹은 가이드만 잘 써두면), 새로 합류한 팀원이 환경 구축에만 하루를 꼬박 보내는 '오픈런' 같은 비극을 막을 수 있습니다. 그냥 깃에서 클론 받고 Docker만 띄우면 바로 업무 투입이 가능하니까요.

 
결국 핵심은 기술적인 복잡함을 IDE라는 도구 뒤로 얼마나 잘 숨기느냐에 달려 있습니다. 도구에 끌려다니지 말고, 도구를 내 입맛에 맞게 길들이는 게 진짜 실력이 아닐까 싶네요. 제 생각에는 지금 바로 안 쓰는 라이브러리들을 정리하고, 깨끗한 Docker 환경에서 다시 시작해 보는 게 가장 효율적인 선택인 것 같습니다.
 
※ 참고: Docker 설정 및 네트워크 구성은 사용하시는 OS와 Docker Desktop 버전에 따라 세부 메뉴 명칭이 조금씩 다를 수 있으니, 잘 안 될 때는 반드시 Docker 공식 문서의 최신 업데이트를 한 번 더 체크하시는 것이 좋습니다.
 
지금 바로 PyCharm의 Settings 메뉴를 열어보세요. 그 작은 시작이 여러분의 퇴근 시간을 앞당겨줄 것입니다.

WebStorm Tailwind CSS IntelliSense 설정으로 프론트엔드 코딩 속도 2배 올리기

프론트엔드 개발을 하다 보면 스타일 잡는 데 의외로 시간을 많이 뺏기곤 하죠. 특히 프로젝트 규모가 커지고 채널이 분리되면서 "이 클래스 이름이 뭐였더라?" 하고 공식 문서를 뒤적거리는 순

byteandbit.tistory.com

반응형