파이참에서 도커 연결

회사에 젊은 피가 수혈되었다.

며칠 전 젊은 동료께서 “도커에 파이참 연결해서 코딩하고 있어요.” 라고 하시는데, 난 이거.. 전에 시도하다 잘 안되서 중단했었는데? 그래서, 여태 virtualenv 만 쓰고 있었는데? 한밤중에 윈도우즈 시스템 폴더에 DLL들을 하나씩 까보던 아이는 어디로 갔단 말인가.

먼 옛날을 생각하며, 다시한번 시도했고 성공했다. 이제 인터프리터는 서버랑 동일하게 도커에서 실행하고, 디버깅은 파이참에서 해주고 있다. 역시 이런거 할 때가 제일 재미있다.

작업 내용을 정리해둔다. 아래에 소스들은 깃헙에 있다.

1. 장고앱을 만든다.

django-admin startproject remote_pycharm_sample

2. 도커 설정 파일들.

docker-compose.yml 파일

version: '2'

services:
mysqltest:
image: mysql:5.6
command: mysqld --character-set-server=utf8mb4
environment:
  - MYSQL_ROOT_PASSWORD=rootpw
  - MYSQL_DATABASE=dtestapp
  - MYSQL_USER=dtestuser
  - MYSQL_PASSWORD=dtestpw
ports:
  - "3306:3306"

remote_pycharm_sample:
build:
context: .
dockerfile: compose/Dockerfile
command: ['compose/./wait-mysql.sh', 'compose/./gunicorn.sh']
environment:
  - MYSQL_ROOT_PASSWORD=rootpw
  - MYSQL_DATABASE=dtestapp
  - MYSQL_USER=dtestuser
  - MYSQL_PASSWORD=dtestpw
  - DJANGO_SETTINGS_MODULE=remote_pycharm_sample.settings
volumes:
  - .:/proj

ports:
  - "8000:8000"
depends_on:
  - mysqltest
links:
  - mysqltest

compose/Dockerfile 은 간단하게 만들었다

FROM python:3.6

ENV PYTHONUNBUFFERED 1
COPY ./requirements.txt /requirements.txt
RUN pip install -r /requirements.txt \
  && groupadd -r django \
  && useradd -r -g django django

WORKDIR /proj

3. 아직은 처음부터 도커로 프로젝트를 생성할 수는 없다.

링크 먼저 로컬의 인터프리터로 장고 프로젝트를 생성한 다음, 메뉴에서 PyCharm -> Proference -> Project Interpreter 를 선택하고, 오른쪽 끝의 “Add…” 를 클릭한다.

4. Docker Compose 에서 docker-compose.yml 파일을 선택한다.

5. 이제 실행 설정.

6. Host 를 0.0.0.0 으로 지정해야 한다.

7. 이제 실행해보면, 파이참에서 도커에 리모트로 디버깅이 된다.

이상.