【Django】開発環境構築のやり方~Docker(ドッカー)編~【Python】

PythonのDjangoでWebアプリケーションを開発したい! という人向けに開発環境構築のやり方を解説します。

前提条件
  • OSはWindows
  • 使用するのはDocker(ドッカー)

CMD(コマンドプロンプト)での開発環境構築については以下の記事を参考にしてください。

関連記事

PythonのDjangoでWebアプリケーションを開発したい! という人向けに開発環境構築のやり方を解説します。 前提条件 OSはWindows 使用するのはCMD(コマンドプロンプト) 仮想環境を使用しない […]

IMG

開発環境構築のやり方~Docker(ドッカー)編~

①ComposeのためにDocker Desktopをインストールする

DjangoをDockerを用いて開発環境構築する場合、Composeというものが必要になります。
なのですが、実は「Docker Desktop」をインストールすることでComposeもインストールされることになります。

すでにDockerやDocker Desktopを使用している方はダウンロード不要ですが、使用していない場合は以下の記事を参考にしてダウンロードしましょう。

関連記事

新しい技術を学ぶ際に、もっとも効果的なのはアプリケーションを自作することです。 最近人気の技術として、LaravelとReactがあります。 どうせアプリケーション作るなら、この2つを組み合わせれば良くない? と思ったので、作[…]

記事内の目次の「1.2 DockerをPCにダウンロード、インストールする」と「1.3 Dockerを使うためにWSLをPCにダウンロード、インストールする」のみで大丈夫です。
Ubuntuは今回は使いませんが、インストールして問題ありません。

続いて、Docker環境の設定を行います。

②Djangoアプリのために、Dockerの設定を行う

DockerDesktopが無事にインストール出来たので、Djangoアプリ用のフォルダを作成しましょう。
お好きなところに「python-docker-devenv」というフォルダを作成してください。
(今回はCドライブの直下に作成しました)

フォルダの中に「Dockerfile」と「requirements.txt」と「docker-compose.yml」の3つのファイルを作成して入れます。

Dockerfileは拡張子なし、requirementsはtxtを、docker-composeはymlを拡張子としてください。
それぞれのファイルの中身を以下のように定義します。

Dockerfile
Dockerfileの説明を以下にまとめます。重要というわけではないので、読み飛ばしてしまってもOKです。(折りたたんでいます)

Dockerfileの説明
・FROM python:3

Dockerを構築するときの親イメージ(ひな形のようなもの)を指定します。今回はpython3で作成しています。

・ENV PYTHONUNBUFFERED 1

環境変数の設定で、1にすることによりコンソールに標準出力とエラー出力がすぐに表示されるようにしています。

・RUN mkdir /code

Dockerのコンテナ内に「code」というディレクトリを作成しています。ここが難しいところなのですが、Dockerはコンテナというものを持っていて、そこに新規のディレクトリを作成した形になります。
(後ほど図解します)

・WORKDIR /code

作成した「code」に移動します。コマンドプロンプトの「cd」です。

・ADD requirements.txt /code/

ローカルの「python-docker-devenv」に作成した「requirements.txt 」ファイルをコンテナディレクトリの「code」の中に追加しています。

・RUN pip install -r requirements.txt

「code」の中に追加した「requirements.txt 」に従って必要なアプリケーションをインストールします。後述しますが、「requirements.txt 」にはDjangoとpsycopg2が記載されているのでこの2つがインストールされます。

・ADD . /code/

最後にローカルの「python-docker-devenv」内のファイルやフォルダをコンテナの「code」内に追加して終了です。

イメージとしては以下のようになります。

普段作業する場所と開発環境が動く場所が違うので、最初は戸惑うかもしれませんね。

続いてrequirements.txtの中身です。こちらの記載はシンプルです。

requirements.txt
使用するDjangoのバージョンを指定しています。今回は3.0以上、4.0未満です。
また、psycopg2はPostgresSQLのインターフェースで、DjangoでPostgresSQLを使用するのに必要になります。

最後にDockerの環境を設定しているdocker-compose.ymlファイルです。こちらは少し複雑ですが、そこまで難しいことは記載されていません。

docker-compose.yml
多くはないですが、記載内容の詳細を以下に記しておきます。こちらも重要というわけではないので、読み飛ばしてしまってもOKです。(折りたたんでいます)

docker-compose.ymlの説明
・version: ‘3’

docker-compose.ymlの記載方法のバージョン指定です。

・db:以下

Djangoで使用するデータベースを指定しています。PostgresSQLを使用して、パスワードも指定します。
(パスワードを指定しないとDjango起動段階でエラーになります)

・web:以下

buildはdockerfileの場所を指定します。同じフォルダ内にあるので、上記のような記載になります。
commandはDjangoの起動コマンドです。Dockerの場合はいちいちこのコマンドを打たなくてもOKです。
volumesがコンテナの同期先です。ローカルの「python-docker-devenv」とコンテナの「code」ディレクトリを同期します。
portsはポートの指定です。localhost:8000にブラウザでアクセスするとコンテナの8000ポートに繋がります。(左がlocalhost、右がコンテナ)
最後にdepends_onはこのweb以下のコンテナと上記のDBコンテナを繋ぐという形になります。

記載内容は多いものの、Dockerの中にDBコンテナとWebコンテナがあって、それの設定を行っていると考えてもらえればOKです。

それでは、Dockerを立ち上げてみましょう。

③CMD(コマンドプロンプト)からDockerを立ち上げる

CMD(コマンドプロンプト)を起動して、Djangoアプリのフォルダに移動した後に以下のコマンドを入力します。

上記は「composeexample」というプロジェクトを立ち上げてね、という意味になります。プロジェクト名に関しては自由に変えてOKです。
現在は立ち上げ段階のためにwebコンテナはまだないために、「python-docker-devenv」フォルダの「docker-compose.yml」に従って作成されます。
もしもこの際に

のようなエラーが出ている場合には、パスが通っていないということですので以下のコマンドを実施すると上手くいくかもしれません。

さて、「python-docker-devenv」の中にも変化があるはずです。

「composeexample」というフォルダと「manage.py」というファイルがあることが確認できればOKです。
それでは最後にデータベースを設定して開発環境を立ち上げてみましょう。

④Djangoのデータベースを設定して、開発環境を立ち上げる

作成された「composeexample」フォルダの中に「settings.py」というファイルがあるはずです。
Djangoのデフォルト設定であるSQLiteを使うように設定されているので、PostgresSQLを使用するように変更します。

settings.py
元々あった記載はコメントアウトしておきましょう。
その下にPostgresSQLの情報を記載します。PASSWORDはdocker-compose.ymlに記載した内容を転記してください。
直打ちでも構いませんし、コピペしてもOKです。

Dockerを起動します。起動コマンドは以下の通りなので、CMD(コマンドプロンプト)で入力しましょう。

上記のような表示がコンソールに表示されればDockerが立ち上がっています。
ブラウザに「http://localhost:8000」と入力して、ロケットが表示されるのも確認しましょう。

カッコいいロケットが表示されれば無事に開発環境の作成が完了です。
今はまだ何も作成していないので画面が表示されるだけですが、この後に様々な機能を実装してみましょう!

また、開発環境を止める場合にはコンソール上で「Ctrl+C」を押せば止まります。こちらも合わせて覚えておくと良いですね。

EX:Docker Desktopで起動しているかどうかも確認可能

おまけですが、デスクトップにある「Docker Desktop」アイコンをダブルクリックすることでコンテナを確認することもできます。

「Something went wrong」と表示され、Docker Desktopが立ち上がらない場合

これまでDocker Desktopを過去に使ったことがあって再インストールをした場合などにこのエラーが表示されるかもしれません。
こちら、「C:\Users\<ユーザー名>\.docker」のファイルを削除したら消えることがあるようです。試してみてください。

開発環境構築のやり方~Docker(ドッカー)編~ おわりに

最近は主流になりつつあるDockerの開発環境構築のやり方でした。
正直個人で開発する分にはCMD(コマンドプロンプト)での開発環境構築でもどちらでも良いと思います。
もしも別アプリなどを作成していてDockerを既に使用している場合はこちらの方が取り組みやすいでしょう。

もっとシンプルにできるCMDでのやり方は以下の記事で解説しているので、こちらをどうぞ。

関連記事

PythonのDjangoでWebアプリケーションを開発したい! という人向けに開発環境構築のやり方を解説します。 前提条件 OSはWindows 使用するのはCMD(コマンドプロンプト) 仮想環境を使用しない […]

IMG