6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Docker Compose - クイックスタート・ガイド:Compose と Django

Posted at

Docker Compose - クイックスタート・ガイド:Compose と Django

原文:Quickstart Guide: Compose and Django
https://docs.docker.com/compose/django/

このクイックスタート・ガイドでは、Compose を使って、どのようにシンプルな Django/PostgreSQLアプリケーションをセットアップ・実行するかを示します。あらかじめ、Compose のインストールが必要です。

プロジェクトの定義

アプリケーションを構築するため、3つのファイルをセットアップしていきます。まず、アプリケーションを実行するにあたり、 Docker コンテナ中には依存関係のある全てが必要になります。そのため、コンテナ中で何が必要なのかを、正確に定義しなくてはいけません。この定義に使うのが Dockerfile と呼ばれます。まず第一に、Dockerfile は次のように構成されます:

FROM python:2.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/

この Dockerfile はイメージを定義するものです。アプリケーションを含むコンテナを構築する時、そこには Python だけでなく、Python と依存関係のある全てが含まれます。Dockerfile の書き方は、Docker user guideDockerfile reference をお読みください。

次に、Python の依存関係を requirements.txt というファイルに定義します。

Django
psycopg2

最後に docker-compose.yml というファイルに、これら全てを結び付けます。アプリケーション構成するサービス(ここでは、ウェブサーバとデータベースです)を定義します。構成とは、使用する Docker イメージと、コンテナ内のどのボリュームをマウントしてリンクするかや、どのポートを公開するか記述します。

db:
  image: postgres
web:
  build: .
  command: python manage.py runserver 0.0.0.0:8000
  volumes:
    - .:/code
  ports:
    - "8000:8000"
  links:
    - db

このファイルの動作についての詳細は、docker-compose.yml リファレンス をご覧ください。

プロジェクトのビルド

これで Django プロジェクトを docker-compose run で開始できます。

$ docker-compose run web django-admin.py startproject composeexample .

まずはじめに、Compose は Dockerfile を使って web サービスのイメージを構築します。それからコンテナ内で django-admin.py startproject composeexample . を実行するためにイメージを使います。

これで現在のディレクトリの中に Django アプリケーションが作成されます。

データベースへの接続

データベースの接続をセットアップする必要があります。composeexample/settings.py の中の DATABASES = ... 定義を読みます:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'postgres',
        'USER': 'postgres',
        'HOST': 'db',
        'PORT': 5432,
    }
}

これらの設定は、Dockerfile で postgres Docker イメージの指定によって決められています。

それから、docker-compose up を実行します。

Recreating myapp_db_1...
Recreating myapp_web_1...
Attaching to myapp_db_1, myapp_web_1
myapp_db_1 |
myapp_db_1 | PostgreSQL stand-alone backend 9.1.11
myapp_db_1 | 2014-01-27 12:17:03 UTC LOG:  database system is ready to accept connections
myapp_db_1 | 2014-01-27 12:17:03 UTC LOG:  autovacuum launcher started
myapp_web_1 | Validating models...
myapp_web_1 |
myapp_web_1 | 0 errors found
myapp_web_1 | January 27, 2014 - 12:12:40
myapp_web_1 | Django version 1.6.1, using settings 'composeexample.settings'
myapp_web_1 | Starting development server at http://0.0.0.0:8000/
myapp_web_1 | Quit the server with CONTROL-C.

これで Docker デーモンのポート 8080 で Django アプリケーションが動作します( Boot2docker を使っている場合は、boot2docker ip で IP アドレスが分かります)。

ほかにも Docker の管理コマンドを実行することもできます。データベースをセットアップするには、例えば、docker-compose up を別のターミナルで実行します:

$ docker-compose run web python manage.py syncdb
6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?