Technique

Docker를 이용한 Windows에서 Linux 개발환경 구축 (feat, Django) 4

JAY-GO 2017. 11. 14. 22:55
반응형

컨테이너의 특정 포트를 호스트에 할당된 IP의 특정 포트로 연결해 봅시다.


Docker는 호스트와 컨테이너의 포트 연결을 위하여 --port 옵션을 제공 하지만, 저는 가급적 GUI를 선호하는 관계로 kitematic을 이용하고자 합니다.


kitematic에서 사용중인 컨테이너(dev_go)의 Settings 탭의 Hostname/Ports 탭에서 포트 연결을 위한 설정이 가능합니다.


DOCKER PORT에는 컨테이너에서 개방할 포트를

PUBLISHED IP: PORT 에는 호스트에서 접속할 PORT를 지정해줍니다(IP는 자동할당)


여기서는 컨테이너 PORT는 8000, 호스트 PORT는 9000으로 지정 후 저장합니다.


아직은 http://192.168.99.100:9000/에 접속해도 별다른 페이지는 뜨지 않습니다.


이제 컨테이너에서 Django 프로젝트를 컨테이너 로컬 웹서버로 실행 해봅시다


컨테이너 터미널에서 프로젝트 폴더로 이동 후 runserver를 수행합니다.

실행중인 서버에 모든 ip의 8000번 포트가 접근 하도록 설정하였습니다.

# cd project

# python3 manage.py runserver 0.0.0.0:8000

Performing system checks...


System check identified no issues (0 silenced).


You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.

Run 'python manage.py migrate' to apply them.


November 14, 2017 - 13:47:33

Django version 1.11.7, using settings 'dev_go.settings'

Starting development server at http://0.0.0.0:8000/

Quit the server with CONTROL-C. 


해당 컨테이너의 WEB PREVIEW에서 구동된 서버의 화면을 볼 수 있습니다.


본 컨테이너에 할당된 ip와 지정한 PORT 주소 http://192.168.99.100:9000/ 에 접속하면 컨테이너 안에서 동작중인 프로젝트를 확인할 수 있습니다.


비록 에러 화면이긴 하지만, 컨테이너 내부에서 동작중인 서버를 호스트 웹브라우저에서 접속 하였습니다.


이제 호스트에서 컨테이너 내부에 실행중인 서버의 에러를 해결해 봅시다.

위 에러는 Django에서 현재 접근중인 주소의 접근을 허락하고 있지 않기 때문에 나타나는 에러 입니다. 이를 해결하기 위해서 setting.py를 수정 합니다.

호스트의 Pycharm을 이용해서 컨테이너와 연동시킨 django 프로젝트의 setting.py을 수정하였습니다. ALLOWED_HOSTS에 우리가 컨테이너를 접근할때 사용하는 IP를 추가하여 접근 가능하도록 설정하였습니다.


이제 정상적인 Django 페이지에 접근 하였습니다!

이로서 우리는 호스트(내 컴퓨터)에서 평소 사용하던 IDE(Pycharm)을 활용하여 Linux(ubuntu) 환경에서 구동중인 Django 프로젝트를 수정하고 이를 확인하였습니다.


다음 포스팅에서는 호스트에서 평소 개발중이던 프로젝트를 컨테이너에서 구동해 보도록 하겠습니다.

반응형