プログラミング学習

Django学習 ~環境構築編~

Django ロゴプログラミング学習

こんにちは。はじめまして。リューさん(@ryu_programs)です。この記事では以下のような人に向けて、Dockerを利用したDjangoの開発環境構築について説明していきます。

  1. Djangoの学習をしたいけど、どうすればいいのか分からない
  2. Djangoの環境構築につまづいている
  3. 紹介編を見て、Djangoを学習しようと思った

また、Djangoの紹介記事やPythonの勉強方法も書いています。もしまだ読んでいない方がいれば、読んでみてください。

Django学習 ~Django紹介編~
この記事では、DjangoやWebフレームワークについて分かりやすく紹介しています。DjangoとはPythonのWebフレームワークで、利用することで簡単にWebアプリを作成できます。また、この記事の後に環境構築編や開発編などが続きます。
Pythonの勉強方法
最近人気沸騰中のプログラミング言語、Pythonの紹介から、Pythonの勉強方法まで詳細に説明していきます。初学者向けの記事ですが、初学者はもちろん、プログラミング経験者でPythonをまだ勉強していない方に対してもおすすめできる内容です。

また、続編であるWebアプリ作成編も公開しました。良ければ読んでみてください。リンクは最後の方にも載せておきます。

Djangoで簡単な「文字カウントメモ」を作ってみる
この記事では、「Djangoを勉強したい!」「Pythonで何か作ってみたい」という人に向けて、Djangoを用いた簡単なWebアプリ作成の方法を実際に一緒に作りながら紹介していきます。プログラミング学習の助けになれば幸いです。

なぜDockerを選んだか

まず、Pythonという言語はモジュールをimportすることによって、機械学習やWebクローリング、Django開発など様々なことを行うことができます。また、所謂本家PythonであるPython3だけではなく、科学計算に強いAnacondaや、もしかするとやむにやまれぬ事情があってPython2をいまだに使われている人もいるかもしれません。

こう聞くとPythonを使ってそのまま開発していたら、ライブラリの数や環境がめちゃくちゃなことになると思いませんか?そこで登場するのが仮想マシンやDockerです。仮想マシンとDockerも仕組みが違うのですが、今回は単に僕の好きなツールであり、軽量かつ高速であるDockerを採用しました。

最初にすべきこと

まず、こちらの公式ドキュメント(https://docs.docker.com/toolbox/toolbox_install_windows/)を参考にしながら、Docker Toolboxをインストールしましょう。ちなみに、僕はWindows10 homeだったのでDocker Toolboxをインストールしたのですが、Macの場合はDocker for Macであったり、Windows10 ProであればDocker for Windowsがあるので、ご使用のPCによって変えましょう。

また、Docker Toolboxの場合はVirtualBoxを一度アンインストールしてからインストールすると良いかもしれません。Docker Toolboxをインストールすると勝手にVirtualBoxまで付いてくるので、既に存在しているとエラーが出る可能性があります。僕がインストールした時にはそこでエラーが出て躓きました。

詳しいインストール方法を紹介している記事はすでにたくさんありますし、OSによってもインストール方法が違う可能性があるのでこの記事では省略します。Docker Toolboxのインストールの際、参考になった記事を紹介しておきます。

Windows環境にDocker Toolboxをインストールする - Qiita
はじめにDocker、非常に便利ですね。Dockerを使用すればローカル環境を汚すことなく、様々なアプリケーションを実行できたりしてしまいます。Dockerに関する記事はネット上に豊富にありますが…

Djangoの環境構築

Dockerのインストールが終わると、次にDjangoの開発環境を整えていきます。この際、もしPycharmやVScodeなどのエディタをインストールしていない場合、しておくことをお勧めします。ちなみに僕はPythonを使うならPycharmが好きです。

PyCharm: JetBrains によるデータサイエンスおよびウェブ開発用 Python IDE
インテリジェントなコード補完、オンザフライのエラーチェックとクイックフィックスなどを備えたPython&Django用のIDE

1.作業ディレクトリの作成

Djangoプロジェクトが格納されるディレクトリを適当な場所に作成します。ただし、この時は作成するだけでそのディレクトリは空にしておきましょう。そして、Docker Toolboxを起動し、cdコマンドでそのディレクトリに移動します。

この後いくつかのファイルを作成しますが、僕はviコマンドを利用して作成しました。

2.Dockerfileの作成

次に、Dockerfileをそのディレクトリの中に作成します。Dockerfileは、そこに記述された内容に基づいてDockerイメージを作成します。Dockerfileについて、より詳しく知りたい方は以下の記事を読んでみてください。

Docker入門(第四回)~Dockerfileについて~ | さくらのナレッジ
こんにちは、Acroquest Technologyの横山です。 4/19(木)にKubernetesやDockerを中心としたコンテナ活用の現状をひとまとめにした開発者のためのイベントである「Japan Contain

Dockefileには以下のように記述します。

From python:3.7
ENV PYTHONBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt ./
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
ADD . /code

例えば、

RUN mkdir /code

というコードは、codeディレクトリをmkdirコマンドで作成しています。このようにRUNやADDなどのコマンドと、それに対応する命令を記述しています。

3.requirements.txtの作成

次に、requirements.txtを記述していきます。requirements.txtは、pipを使って指定のパッケージを指定のバージョンでインストールできる設定ファイルです。先ほど作成したディレクトリに、Dockerfileと同様にrequirement.txtを作成して以下のように記述します。

Django
psycopg2

これは、Djangoとpsycopg2をインストールするという意味です。psycopg2の後に改行しないように気をつけてください。また、これは注意点なのですが、このrequirement.txtやdockerfileを更新した場合には、以下のように実行しなければ反映されません。

$ docker-compose up --build -d

4.docker-compose.ymlの作成

こちらも先ほどと同じく、作成したディレクトリにdocker-compose.ymlというファイルを作成して記述していきます。このファイルを作成することで、管理が非常に楽になります。内容は以下の通りです。8000ポートでアクセスできるようにしています。


version: '3'

services:
  db:
    image: postgres
    volumes:
      - poll_db_data:/var/lib/postgresql/data:Z
    ports:
      - "5432"
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=mypassword
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db

volumes:
  poll_db_data:
    external: true

Dockerはコンテナを削除してしまうと、データベースの内容もすべて消えてしまうので、”poll_db_data”というvolumeを作成し、このようにZオプションをつけたり、external: trueを指定したりしています。

5.プロジェクトの作成

$ docker-compose run web django-admin.py startproject [プロジェクト名] .

このようなコマンドを実行することで、manage.pyの他プロジェクトディレクトリが作成されます。プロジェクト名は基本何でも良いです。また、docker-composeコマンドはdocker-compose.ymlが存在するディレクトリの中で実行してください。

次に、作成されたプロジェクトディレクトリの中のsettings.pyを開き、DATABASE=・・・のところを以下のように記述します。USERやPASSWORDは適当です。好きなものを使ってください。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'postgres',
        'USER': 'postgres',
        'PASSWORD': 'mypassword',
        'HOST': 'db',
        'PORT': 5432,
    }
}

また、同じくsetting.pyのALLOWED_HOSTの部分を以下のように変更します。

ALLOWED_HOSTS = ["*"]

その後、以下のコマンドでDBのマイグレーションを行います。

$ docker-compose run web ./manage.py makemigrations
$ docker-compose run web ./manage.py migrate

さらに、スーパーユーザーも作成してしまいます。以下のコマンドを実行すると、ユーザ名やメールアドレス、パスワード等の入力を求められると思うので、入力してください。Djangoの管理ページにアクセスするために必要です。

$ docker-compose run web ./manage.py createsuperuser

6.コンテナの作成・起動

$ docker-compose up -d

このコマンドを実行してコンテナを作成・起動しましょう。-dオプションをつけることで、コンテナ起動後もコマンドを実行できます。

そして、次のコマンドでdefaultマシンに割り振られたipアドレスを取得します。僕の場合はdefaultマシンをそのまま使っていますが、別のマシンを使っている方はそのマシンについて調べてください。何もしていなければdefaultマシンを使っているはずです。

$ docker-machine ip default

7.アクセス

chrome等で、http://[6で調べたIPアドレス]:8000でアクセスしてみてください。(例:http://0.0.0.0:8000)この8000はdocker-compose.ymlで指定した値です。

以下のような画面になれば正しく環境構築ができています。正確には、右上のDjangoは3.0などになっているはずです。

おわりに

以上で環境構築編は終わりです。開発編に続きます。Pythonの勉強方法やDjangoの紹介、基本情報技術者試験の勉強方法なども分かりやすく書いているので、良ければ読んでみてください。

Pythonの勉強方法
最近人気沸騰中のプログラミング言語、Pythonの紹介から、Pythonの勉強方法まで詳細に説明していきます。初学者向けの記事ですが、初学者はもちろん、プログラミング経験者でPythonをまだ勉強していない方に対してもおすすめできる内容です。
Django学習 ~Django紹介編~
この記事では、DjangoやWebフレームワークについて分かりやすく紹介しています。DjangoとはPythonのWebフレームワークで、利用することで簡単にWebアプリを作成できます。また、この記事の後に環境構築編や開発編などが続きます。
基本情報技術者試験に合格できた勉強方法
基本情報技術者試験はエンジニアとしての基礎的な知識が問われる試験で、勉強すべき範囲が非常に広く、100時間程度の勉強が必要と言われています。その基本情報技術者試験をこれから受けようと思っている人に向けて、僕が勉強してきたことを紹介します。

開発編も公開しました!

Djangoで簡単な「文字カウントメモ」を作ってみる
この記事では、「Djangoを勉強したい!」「Pythonで何か作ってみたい」という人に向けて、Djangoを用いた簡単なWebアプリ作成の方法を実際に一緒に作りながら紹介していきます。プログラミング学習の助けになれば幸いです。

また、よろしければ僕のTwitter(@ryu_programs)のフォロー等もお願いします。

タイトルとURLをコピーしました