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


四万温泉ガイドロボット

温泉訪問客に温泉街の旅館、ホテルなどの宿泊施設、お店、観光スポットを散策時に音声ガイドする「四万温泉ガイドロボット」を開発しました。

2018年10月16日上毛新聞に掲載されました。

四万温泉ガイドロボット

 

ロボットは、ラズパイ、バッテリー、テンキー、イヤホン、スピーカーで構成されています。
開発プログラミング言語は、pythonとPHPです。データベースは、MySQLです。

温泉ガイドマップに記載された宿泊施設などに予め付与した「番号」をテンキーで入力するとイヤホン又はスピーカーでその施設のガイドを音声で行います。

ガイド時は、自動で温泉街のイベント情報や観光スポット情報をプッシュ型でガイドします。

イヤホン、スピーカーの切替えは「*+Enter」で行えます。複数人でガイドを受ける場合は、スピーカーに切り替えることで対応できます。

本ガイドロボットの特徴:
(1)廉価版で提供できます。
(2)ガイドをプッシュ型で行うことができ、適宜広告宣伝が可能です。
(3)DB(データベース)でコンテンツやログ情報を管理します。
(4)オンラインでコンテンツを維持管理できます。
(5)テンキーのみでロボット制御可能です。

イヤホン、スピーカーの音量は、「+」、「-」ボタンを押すことで調整できます。

ガイド時に、ガイド内容を繰り返し聞けるリピート機能や当該ガイドを途中で中断する機能などもあります。

ガイドコンテンツは、サーバーのDB(データベース)に格納されており、コンテンツの追加、変更、削除は、オンラインで行うことができます。
四季毎のコンテンツをDBに格納できますので、四季折々のガイドを提供することができます。

また、訪問客がガイドを受けた施設などのログ情報も収集できます。
貸出日時や返却日時のログ情報を収集して、有料貸出の場合の課金計算をログ情報から行うことができます。

今回は、誰でも簡単に操作できる「入力方式」をあえて採用しましたが、マイクロホンで、宿泊施設名や商店名、観光スポット名を言うとクラウド人工知能音声認識で、名称を特定してそのガイドを行うことができるバージョンも開発済みで、今後、ニーズに応じてリリースします。

次期バージョンは、AI画像認識で施設名を特定してガイドを行うバージョンを開発予定です。

群馬プログラミングカレッジでは、AIエンジニア、IoTエンジニアを募集しています。
今後、キーワードは、AI×IoTの時代です。
AI、IoTに興味のある方のご連絡をお待ちしております。

ガイドロボットの導入をご検討中の方もご連絡ください。

LINEで送る

Pocket