Docker로 Django 애플리케이션 구축하기

이재홍 http://www.pyrasis.com 2014.08.02 ~ 2014.09.20

 

 

Django와 데이터베이스 컨테이너 생성하기

Django와 데이터베이스 이미지 준비가 끝났으니 컨테이너를 생성합니다. 먼저 데이터베이스 컨테이너부터 생성합니다.

$ sudo docker run -d --name db -e ORACLE_PASSWORD=examplepassword oracle
  • 데이터베이스 컨테이너를 생성할 때 -e 옵션을 사용하여 ORACLE_PASSWORD에 사용할 system 계정의 비밀번호를 설정합니다.

Django 애플리케이션 디렉터리로 이동한 뒤 Django 데이터베이스를 초기화하고 관리자 계정을 설정합니다.

~$ export ORACLE_HOST=$(sudo docker inspect -f "{{ .NetworkSettings.IPAddress }}" db)
~$ export DB_ENV_ORACLE_PASSWORD=examplepassword
~$ cd
~$ cd exampleapp
~/exampleapp$ ./manage.py syncdb
Operations to perform:
  Apply all migrations: admin, contenttypes, auth, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying sessions.0001_initial... OK

You have installed Django's auth system, and don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'pyrasis'): admin
Email address: admin@example.com
Password: <비밀번호 입력>
Password (again): <비밀번호 입력>
Superuser created successfully.
  • export 명령을 사용하여 환경 변수의 ORACLE_HOST에 db 컨테이너의 IP 주소를 설정합니다.
    • docker inspect 명령에서 -f 옵션을 사용하면 특정 항목만 출력할 수 있습니다. ”{{ .NetworkSettings.IPAddress }}”는 컨테이너의 IP 주소입니다.
  • export 명령을 사용하여 환경 변수의 DB_ENV_ORACLE_PASSWORD에 Oracle 데이터베이스 비밀번호를 설정합니다.
  • manage.py syncdb를 실행하여 Django 데이터베이스를 초기화합니다. 관리자(superuser) 설정 부분이 나오면 yes를 입력하고 관리자 계정과 이메일, 비밀번호를 설정합니다.

MySQL, PostgreSQL 사용하기
다음은 MySQL 사용 설정입니다.

~$ export MYSQL_HOST=$(sudo docker inspect -f "{{ .NetworkSettings.IPAddress }}" db)
~$ export DB_ENV_MYSQL_ROOT_PASSWORD=examplepassword
~$ mysql -h $MYSQL_HOST -uroot -p$DB_ENV_MYSQLROOT_PASSWORD \
    -e "create database exampleapp"
~$ cd
~$ cd exampleapp
~/exampleapp$ ./manage.py syncdb

다음은 PostgreSQL 사용 설정입니다.

~$ export POSTGRESQL_HOST=$(sudo docker inspect -f "{{ .NetworkSettings.IPAddress }}" db)
~$ export DB_ENV_POSTGRESQL_PASSWORD=examplepassword
~$ PGPASSWORD=$DB_ENV_POSTGRESQL_PASSWORD psql -h $POSTGRESQL_HOST -U postgres \
    -c "CREATE DATABASE exampleapp WITH ENCODING 'UTF8' TEMPLATE template0"
~$ cd
~$ cd exampleapp
~/exampleapp$ ./manage.py syncdb

Django 컨테이너를 생성합니다.

$ sudo docker run -d --name example-django --link db:db -p 80:80 django
  • Django 컨테이너를 생성할 때 --link 옵션을 사용하여 db 컨테이너를 db 별칭으로 연결합니다. 그리고 -p 옵션을 사용하여 외부에서 80번 포트에 접근할 수 있도록 설정합니다.

컨테이너 생성이 끝났으면 웹 브라우저를 실행하고 서버의 IP 주소나 도메인으로 접속합니다.


그림 18-4 웹 브라우저에서 Django 컨테이너에 접속

추가 해설
--link옵션은 추후 사라질 예정입니다. 네트워크를 생성하여 컨테이너를 연결하는 방법은 ‘6.2 Docker 컨테이너 연결하기’의 추가 해설을 참조하기 바랍니다.


저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.

Published

30 November 2014