DockerによるDjango開発環境

LINEで送る
Pocket

DockerによるDjango開発環境

ソースコードの開発は、Windows上のPyCharmで、アプリケーションの動作確認はDockerコンテナ(Ubuntu)のrunserverで実行できる環境を構築します。

 

全体像は、次のようになります。

DockerによるDjango実行環境

 構築手順:

Docker Desktop for Windows」をインストール

Docker Desktop for Windowsは、Hyper-V 仮想化を使用します。Windows 10 上で Hyper-V を使用するためには、Windows 10 Professional 以上のエディションが必要です。

なお、今回インストールしたデバイスの仕様とWindowsの仕様は次の通りです。

プロセッサ Intel(R) COre(TM) i5-5200U CPU @ 2.20GHz 2.20GHz

実装RAM 4.00 GB

システムの種類 64 ビット オペレーティング システム、x64 ベース プロセッサ

エディション Windows 10 Pro

 

事前準備

Docker Desktop for Windows をインストールする事前準備として、Windows マシンの Hyper-V を有効化しておく必要があります。

また、Docker公式サイトにて、Docker ID というアカウントを取得して必要があります。

 

Hyper-Vの有効化 にする

Windows ボタンを右クリックし、[アプリと機能] を選択します。

[関連設定] の下にある [プログラムと機能] を選択します。

[Windows の機能の有効化または無効化] を選択します。

[Hyper-V] を選択して、[OK] をクリックします。

有効化するには Windows マシンの再起動が必要です。

 

 

Docker IDの取得 する

Docker Desktop をインストールするには、Docker IDというアカウントが必要となります。

事前に、Docker 公式サイトにて、Docker IDのアカウントを取得してください。

 

次のURLからサインアップしアカウントを作成してください。

 

https://hub.docker.com/signup

 

Docker Desktop for Windows のインストール

 

インストール

 

インストーラーをダウンロードする

次のサイトで Docker for Windows インストーラーをダウンロードしてインストールします。

 

https://www.docker.com/products/docker-desktop

 

[Download Desktop for Mac and Windows] ボタンをクリックします。

 

次の画面で、 [Download Desktop for Windows] ボタンをクリックして、[Docker Desktop Installer.exe] をダウンロードします。

 

Windowsマシンへのインストールする

ダウンロードした [Docker Desktop Installer.exe] ファイルを、エクスプローラーから実行してください。

ダウンロードが完了すると、Configraton の画面が出ます。そのまま「OK」を押してください。

 

[Use Windows containers instead of Linux containers (this can be chananged after installation] の行にはチェックボックスが付いていません。これはコンテナで Windows を動かす場合のオプションです。

今回は Ubuntuを動かしたいのでこのチェックボックスは不要です。

 

インストールが始まります。しばらく待機してください。

ここまでで Docker Desktop for Windows のインストールは完了です。

 

 

動作確認

 

Docker のバージョンの確認をしてみる

まずは、インストールされた Docker のバージョンを確認してみましょう。

Windows PowerShell を起動して、docker version コマンドでバージョン情報が表示されます。

Docker version

Hello Worldを動かしてみる

おなじみの hello world を実行します。

docker run コマンドは、イメージからコンテナを起動するコマンドです。

 

 

hello-world というイメージからコンテナを作成して起動するという意味になります。

ただし、ローカルに hello-world イメージがないため、Docker デーモンが hello-world イメージを Docker HubDocker社が運営する、インターネット上でイメージを公開・共有したりする Docker Registry サービス)からダウンロードし、イメージからコンテナを起動します。

イメージはファイルシステムとアプリケーションやミドルウェア、実行時に必要とするパラメータから構成されます。

このコンテナは次のような標準出力を出して終了します。

 

 

 

これでDockerの動作確認ができました。

 

Djangoプロジェクトを作成

 

PyCharmによるDjango開発環境の構築」の手順で、

\Users\user\PycharmProjects\mysiteDjangoプロジェクトを作成します。

 

 

DockerfileからDockerイメージを作成

 

次に示すDockerfileDjangoプロジェクトの直下に作成します。

ファイル名は、拡張子なしの「Dockerfile」とします。

 

 

次のコマンドを実行して、DockerfileからDockerイメージを作成します。

このDockerfileから、python3.7.5をインストールしたUbuntu 18.04ベースのイメージを作成することができます。

 

Dockerコンテナ の作成・起動

 

コンテナ を作成・起動する

Dockerイメージが作成できたら、Dockerコンテナを作成して起動します。

 

次のように docker run コマンドを実行して、コンテナを作成・起動します。

Dockerコンテナを実行して、bashで対話型シェルにログインします。

 

runserverのために、8000番ポートを開けておきます。

また、DjangoプロジェクのディレクトリをDocker側の「/root/mysite」ディレクトリと同期させます。

 

 

 

Dockerコンテナ上で事前準備

「393dff996336」は、Dockerコンテナ作成時に自動的に作成される「コンテナID」です。

 

 

動作確認

これで、PyCharmで作成したソースコードを、Dockerコンテナ上のUbuntuで動作確認することができます。

ホスト側の環境を壊すこともありません。

最後にrunserverを実行して、Windows上のブラウザで動作確認を行います。

 

 

Dockerコンテナ(コンテナID:393dff996336)を起動して、ログイン。

MySQLサービスを起動して、作成したユーザでMySQLに接続して、「quit」コマンドで抜ける。

次に、「python3 manage.py runserver 0.0.0.0:8000」で、サーバーを起動する。

ブラウザで、「http://localhost:8000/hello」で動作を確認。「hello」は、Djangoのアプリケーション名。

 

LINEで送る
Pocket

複数ロボット会話システムの開発

LINEで送る

Pocket


複数ロボット会話システムの開発

複数のロボットがお互いに会話するシステムです。

 

 

システム構成:

  • インターネットに複数のロボットを接続
  • 各ロボットは、クラウドのAI自然会話Webサービス、音声認識Webサービスに接続
  • 各ロボットは、ロボットの会話の同期など制御するサーバに接続
  • サーバーは、NTTコミュニケーションズのBizメール&ウェブビジネスサーバー
  • データベースは、MySQLサーバー

ロボットのハードウェアは、Raspberry Pi(ラズベリーパイ)とArduino(アルドゥイーノ)、マイクロホン、スピーカー、LED2個、サーボモータ3個で構成

ロボットの開発プログラム言語はpython
Arduinoの制御言語はC/C++言語
ロボット会話制御Webサービスは、PHP言語

 

会話モード:
(1)シナリオ会話モード(今回開発完了)
(2)AI自然会話モード(開発開始)

シナリオ会話モードは、複数のロボットが会話するシナリオをサーバーに配置して置き、各ロボットは会話を開始時にサーバーからシナリオをダウンロードしてローカルファイルに格納する。

各ロボットはシナリオに沿って、同期を取りながら会話をする。
同期の制御などは、サーバー上のWebサービスプログラムが行う。
各ロボットは同時に発話することもできる。
ロボットの音声は「喜怒哀楽」を表す4種類の発声を行うことができる。
複数のシナリオを登録して置き、そのシナリオを繰返し会話をすることができる。
参加するロボットの数は制限がなく1台のロボットからn台のロボットに会話を行わせることができる。

シナリオ会話モードの利用シーン:
展示会での作品の案内
観光地の案内
会場の案内

など、様々な案内を人に代わってロボットが案内できる。

AI自然会話モードは、複数のロボットがAI自然会話をお互いにするモードで、「ある特定のテーマ」を与え、このテーマに関連する自然会話を行う。
「ある特定のテーマ」は、インターネット上のある「特定テーマ」関連情報をロボットが自動収集(キューレーション:curation)して、その情報を基に他のロボットへ発言して、お互いに会話を進める。
会話内容はサーバーのMySQLデータベースに記憶する。
ロボットは、新たな言葉(名詞)が投げかけられるとその言葉を記憶していき、徐々にボキャブラリーを自ら増やしていく。
このような学習機能を持たせることで、複数のロボットの会話がどのような結果を導くかは、興味ある。

 

自分の会話ロボットとこのシステムの会話ロボットとインターネット上で会話したいという方は連絡ください。
会話のWebサービス仕様をお伝えします。

 

LINEで送る

Pocket