スポンサードリンク



こんにちは。sinyです。

最近Docker入門したばかりですが、知識定着のためDocker関連の記事をアウトプットしていきます。

本記事では、Windows環境+DockerでDjangoアプリを構築する手順のまとめ記事です。

前提環境

本記事では、以下の環境を前提にしています。

項目 バージョン等
OS Windows10(Home)
DB  Postgress
Django 2.x
Docker DockerToolbox
 Windows(Home)ではDocker環境構築のハードルがかなり高いため、現状古いバージョンになっているため推奨はされていませんが、簡単にDocker環境を構築できるためDockerToolboxを利用しています。

DockerToolboxのインストール

まず最初にDockerToolboxをインストールします。

上記リンク先から「DockerToolbox-19.03.1.exe」をダウンロードしたらexeファイルをダブルクリックしてインストールします。

インストール自体は画面の指示に従うだけで簡単にできます。

インストールが完了すると、デスクトップに「Docker Quickstart Terminal」というアイコンが生成されるので、クリックするとDocker環境のターミナル画面が起動します。

 DockerTerminal画面で以下のようなエラーが発生する場合はWindowsのBIOS画面でVT-X/AMD-vの項目をenableに変更しましょう。
Error creating machine: Error in driver during machine creation: This computer doesn't have VT-X/AMD-v enabled. Enabling it in the BIOS is mandatory

Djangoコンテナ作成に必要なファイルの準備

Djangoのコンテナ環境構築に必要な3つのファイルを設定指定します。

Dockerfileの作成

任意のフォルダで以下を記述したDockerfileを作成します。
今回はC:\Users\django_dockerとします。

 

設定ファイルの意味は以下の通りです。

  • FROM python:3.6 → Dockerイメージのベースとなるイメージを指定(Docker hubで公開されているイメージ名を指定します)
  • ENV PYTHONUNBUFFERED 1→バッファが溜まってから出力するのを避けるための記述。
  • RUN mkdir /code → /codeフォルダを作成
  • WORKDIR /code → ワークディレクトリを設定
  • ADD requirements.txt /code/  → requirements.txtをワークディレクトリ(/codeにコピーする)
  • RUN pip install -r requirements.txt → pip install で必要なモジュールをインストール

docker-compose.ymlの作成

つづいて、Dockerfileと同じディレクトリにdocker-compose.ymlという名称でファイルを作り以下の設定を記述します。

  • version: '3'   →docker-compose.ymlのファイルフォーマットバージョンを宣言(バージョン3は最新版)
  • services:  →サービスの要素を定義
  • db: →コンテナの名前の定義(データベース)
  • image: postgres →利用するDockerイメージ名を指定(今回はpostgres)
  • web:  →コンテナの名前の定義(ウェブサーバ)
  • build: .  → カレントディレクトリを指定してDockerイメージのビルドを実行
  • command: python3 manage.py runserver 0.0.0.0:8000 → コマンドの実行(Django開発サーバの実行)
  • volumes: 
    - .:/code →カレントディレクトリをコンテナ内のワークディレクトリにマウント
  • ports:
    - "8000:8000" →ポートフォワーディング設定(外から80ポートにアクセスしてコンテナ内の80ポートに連携)depends_on: → コンテナの依存関係を定義する(webサーバはdbコンテナに依存する関係を定義)
    - db

 

requirements.txtの作成

続いて、インストールpythonモジュールの定義をrequirements.txtに記載します。
今回は、djangoとpostgresの連携に必要なpsycopg2をインストールします。

 

Dockerコンテナの作成と起動

dockerのターミナル画面でC:\Users\django_dockerに移動してから以下のコマンドを実行します。

docker-compose runコマンドを使ってコンテナを作成&実行します。
これでDjangoのプロジェクトが生成されます。(プロジェクト名がexample)

コマンドが正常終了すると、以下の通りdjango-dockerフォルダ直下にexampleフォルダ(Djangoプロジェクト)が生成されます。
また、manage.pyも同じフォルダ内に生成されます。

 

Django初期設定

example\settings.pyを開いて以下の点を変更します。
1点目は、ALLOWED_HOSTS = ["*"]です。
2点目はpostgres用のdb接続設定を以下の通り設定します。

 

以下のコマンドを実行して変更内容をコンテナに反映させます。

以下の表なメッセージが表示されればOKです。

http://192.168.99.100:8000/にアクセスして以下のようなDjango画面が表示されればOKです。

 

Djangoアプリの作成

続いて以下のコマンドを実行してDjangoのアプリケーションを作成します。
今回は家計簿アプリを作るのでアプリケーション名をkakeiboにしています。

コマンドが正常終了すると、以下の通りdjangoのアプリケーションフォルダ(kakeibo)が生成されます。

kakeiboフォルダの中身は以下の通り通常のDjangoで作ったときのアプリケーションのモジュールが生成されます。

 

Djangoモデルの作成

続いてkakeibo\models.pyに家計簿テーブルを定義します。
設定は以下の通りCategoryとKakeiboテーブルを定義します。

 

次に、settings.pyに先ほど作成したアプリケーションを追加しておきます。

 

マイグレーションの実行

続いて、定義したモデルの内容をデータベースへ反映させるためにマイグレーションを実行します。

以下のようにエラーが表示されなければOKです。

続いて以下のコマンドでmigrateを実行してdbに反映させます。

以下のようにエラーなしで正常終了すればOKです。

管理ユーザの作成

続いて、Djangoの管理サイトのアクセスするために管理者ユーザを作成しておきます。
コマンドは以下の通りです。

admin.pyの設定

管理画面上にCategoryとKakeiboテーブルが表示されるようにkakeibo\admin.pyの設定を以下の通り変更します。

 

以下のコマンドを実行して変更を反映させます。

http://192.168.99.100:8000/adminにアクセスして先ほど作成した管理者ユーザでログオンします。

以下のとおりKakeiboとCategoryテーブルが表示されればOKです。

以下のような感じでいくつかカテゴリと家計簿テーブルにデータを登録しておきましょう。

追加モジュールのインストール手順

ここで、以下の追加モジュールをインストールします。

django-bootstrap-form
django-extensions

後からコンテナに対してモジュールをインストールしたい場合はdocker container exec コマンドを使います。

以下の通りインストールが正常終了すればOKです。

なお、-itの次に指定している「django_docker_web_1」はdocker psコマンドで以下の通り確認できます。

新しく追加した2つのモジュールをsettings.pyに追加しておきましょう。

 

構文エラーチェックの方法

ちなみに、djangoプロジェクトのエラーは以下のコマンドで確認できます。

エラーがなければ以下のように表示されます。

家計簿一覧画面設定

最後に、家計簿一覧画面を定義するためにviews.py、urls.py,templatesを作成していきます。

まずはkakeibo\views.pyに以下の定義を設定します。

 

続いてプロジェクト直下のexample\urls.pyを以下の設定にします。

 

次はアプリケーション配下のkakeibo\urls.pyを新規に作成し以下の通り設定します。

 

最後にテンプレートファイルを作成します。
テンプレートはkakeibo\templates\kakeiboフォルダを作成し、base.htmlとkakeibo_list.htmlを以下の通り作成します。

base.html

 

kakeibo_list.html

 

http://192.168.99.100:8000/kakeibo/kakeibo_list/にアクセスして以下の通り家計簿一覧画面が表示されればOKです。

以上、Windows+DjangoでDocker入門【入門者向け】でした。

おすすめの記事