이번 포스팅에서는 기존에 호스트 에서 수행중이던 프로젝트를 도커 컨테이너에서 구동하여 호스트 화면에서 확인해 보도록 하겠습니다.
ㅇ 컨테이너 환경
- 기존 포스팅에서 생성한 컨테이너(dev_go)
ㅇ 컨테이너에서 동작시킬 Django 프로젝트
- 프로젝트 : 기사 크롤링을 위한 django 프로젝트
- 사용패키지 리스트 : [django, pandas, requests, selenium, beautifulsoup4, mysqlclient, lxml]
- 프로젝트 구동화면
앞에서 배운 내용을 토대로 기존의 프로젝트를 컨테이너에 구동 시키도록 합니다.
우선, kitematic 에서 사용할 컨테이너와 호스트를 연결하는 포트를 설정 합니다.
다음으로, 볼륨에 호스트에서 진행중인 프로젝트 폴더를 연결시킵니다.
연결후 컨테이너의 터미널(exec 버튼)에서 볼륨 설정한 폴더의 내용을 보면, 호스트의 파일들을 확인할 수 있습니다.
# cd project
# ls
Dockerfile db.sqlite3 girls_nginx.conf media setup.py test.py
crawler girls manage.py requirements.txt static uwsgi_params
이제 서버를 구동 해 봅시다.
# python3 manage.py runserver 0.0.0.0:8000
Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x7f63033fff28>
Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/django/db/backends/mysql/base.py", line 26, in <module>
import MySQLdb as Database
ImportError: No module named 'MySQLdb'
아직은 컨테이너에 프로젝트에 필요한 패키지 들이 없기때문에 오류가 발생 합니다.
필요한 파이썬 페키지들을 pip install 명령을 통해 설치해 줍니다.
이 때, 볼륨으로 연결한 호스트 폴더에 requirements.txt 파일을 생성하여 필요한 패키지들을 작성하여 pip install -r로 일괄 설치할 수 있습니다.
개발중인 프로젝트이기 때문에 가급적 최신 패키지를 사용하고자 버전 지정을 하지 않았으나 ==, > 등의 기호를 통해 버전 지정도 가능합니다.
이제 컨테이너에서 해당 requirements.txt의 패키지를 일괄 설치해 봅시다
한번에 필요한 패키지 들이 설치되었습니다.
설치과정중 일부 패키지에 대하여(mysqlclient) OS에 별도의 패키지 설치를 요구하는 등의 에러가 발생할 수 있습니다. [Error Solution] 참조
서버가 동작 하더라도, django 프로젝트의 setting.py에서 ALLOW_HOST에 접속하는 주소에 대한 허용이 없으면 접속할 수 없습니다.
이를 호스트에서 입력해줍니다.
이제 컨테이너에서 테스트 서버를 구동해 봅시다.
# python3 manage.py runserver 0.0.0.0:8000
Performing system checks...
System check identified no issues (0 silenced).
November 19, 2017 - 00:57:09
Django version 1.11.7, using settings 'girls.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
[19/Nov/2017 00:57:11] "GET / HTTP/1.1" 200 35723
[19/Nov/2017 00:57:11] "GET /static/css/crawler.css HTTP/1.1" 200 746
기존의 호스트 프로젝트가 컨테이너에서 구동되고 이를 호스트에서 확인할 수 있는것을 볼 수 있습니다.
다음 포스팅에서는 dockerfile을 작성하여 이미지 생성부터 기존 호스트에서 개발중인 프로젝트를 컨테이너에서 구동하여 호스트에서 확인하는 전 과정을 자동화 해 보도록 하겠습니다.
'Technique' 카테고리의 다른 글
Google Cloud, Docker로 간단하게 웹서비스 구축하기(feat. Django) 1 (0) | 2018.01.14 |
---|---|
[Error Solution] OSError: mysql_config not found (1) | 2017.11.19 |
Docker를 이용한 Windows에서 Linux 개발환경 구축 (feat, Django) 4 (0) | 2017.11.14 |
Docker를 이용한 Windows에서 Linux 개발환경 구축 (feat, Django) 3 (0) | 2017.11.13 |
Docker를 이용한 Windows에서 Linux 개발환경 구축 (feat, Django) 2 (0) | 2017.11.12 |