PythonのDjangoでWebアプリケーションを開発したい! という人向けに開発環境構築のやり方を解説します。
- OSはWindows
- 使用するのはDocker(ドッカー)
CMD(コマンドプロンプト)での開発環境構築については以下の記事を参考にしてください。
PythonのDjangoでWebアプリケーションを開発したい! という人向けに開発環境構築のやり方を解説します。 前提条件 OSはWindows 使用するのはCMD(コマンドプロンプト) 仮想環境を使用しない […]
開発環境構築のやり方~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を拡張子としてください。
それぞれのファイルの中身を以下のように定義します。
1 2 3 4 5 6 7 |
FROM python:3 ENV PYTHONUNBUFFERED 1 RUN mkdir /code WORKDIR /code ADD requirements.txt /code/ RUN pip install -r requirements.txt ADD . /code/ |
- 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の中身です。こちらの記載はシンプルです。
1 2 |
Django>=3.0,<4.0 psycopg2 |
また、psycopg2はPostgresSQLのインターフェースで、DjangoでPostgresSQLを使用するのに必要になります。
最後にDockerの環境を設定しているdocker-compose.ymlファイルです。こちらは少し複雑ですが、そこまで難しいことは記載されていません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
version: '3' services: db: image: postgres environment: POSTGRES_PASSWORD: postgrespassword web: build: . command: python3 manage.py runserver 0.0.0.0:8000 volumes: - .:/code ports: - "8000:8000" depends_on: - db |
- 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アプリのフォルダに移動した後に以下のコマンドを入力します。
1 2 3 |
>cd C:\python-docker-devenv >docker-compose run web django-admin startproject composeexample . |
上記は「composeexample」というプロジェクトを立ち上げてね、という意味になります。プロジェクト名に関しては自由に変えてOKです。
現在は立ち上げ段階のためにwebコンテナはまだないために、「python-docker-devenv」フォルダの「docker-compose.yml」に従って作成されます。
もしもこの際に
のようなエラーが出ている場合には、パスが通っていないということですので以下のコマンドを実施すると上手くいくかもしれません。
1 |
>docker-compose build |
さて、「python-docker-devenv」の中にも変化があるはずです。
「composeexample」というフォルダと「manage.py」というファイルがあることが確認できればOKです。
それでは最後にデータベースを設定して開発環境を立ち上げてみましょう。
④Djangoのデータベースを設定して、開発環境を立ち上げる
作成された「composeexample」フォルダの中に「settings.py」というファイルがあるはずです。
Djangoのデフォルト設定であるSQLiteを使うように設定されているので、PostgresSQLを使用するように変更します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# Database # https://docs.djangoproject.com/en/3.2/ref/settings/#databases """ DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', } } """ DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'postgres', 'USER': 'postgres', 'PASSWORD': 'postgrespassword', 'HOST': 'db', 'PORT': 5432, } } |
その下にPostgresSQLの情報を記載します。PASSWORDはdocker-compose.ymlに記載した内容を転記してください。
直打ちでも構いませんし、コピペしてもOKです。
Dockerを起動します。起動コマンドは以下の通りなので、CMD(コマンドプロンプト)で入力しましょう。
1 |
C:\python-docker-devenv>docker-compose up |
上記のような表示がコンソールに表示されればDockerが立ち上がっています。
ブラウザに「http://localhost:8000」と入力して、ロケットが表示されるのも確認しましょう。
カッコいいロケットが表示されれば無事に開発環境の作成が完了です。
今はまだ何も作成していないので画面が表示されるだけですが、この後に様々な機能を実装してみましょう!
また、開発環境を止める場合にはコンソール上で「Ctrl+C」を押せば止まります。こちらも合わせて覚えておくと良いですね。
EX:Docker Desktopで起動しているかどうかも確認可能
おまけですが、デスクトップにある「Docker Desktop」アイコンをダブルクリックすることでコンテナを確認することもできます。
これまでDocker Desktopを過去に使ったことがあって再インストールをした場合などにこのエラーが表示されるかもしれません。
こちら、「C:\Users\<ユーザー名>\.docker」のファイルを削除したら消えることがあるようです。試してみてください。
開発環境構築のやり方~Docker(ドッカー)編~ おわりに
最近は主流になりつつあるDockerの開発環境構築のやり方でした。
正直個人で開発する分にはCMD(コマンドプロンプト)での開発環境構築でもどちらでも良いと思います。
もしも別アプリなどを作成していてDockerを既に使用している場合はこちらの方が取り組みやすいでしょう。
もっとシンプルにできるCMDでのやり方は以下の記事で解説しているので、こちらをどうぞ。
PythonのDjangoでWebアプリケーションを開発したい! という人向けに開発環境構築のやり方を解説します。 前提条件 OSはWindows 使用するのはCMD(コマンドプロンプト) 仮想環境を使用しない […]