はじめに
最近 Dajngo の使い方を覚えてきたこともあって、Python と Django を使ってアプリを作りたいと思いました。どうせだったら開発の進め方をまとめながら作っていこうと思い、この記事を書いています。
Python 初心者の方などにわかるように書いていきますが、もしわからないところがありましたら、コメントだったり twitter でご質問ください。コマンドを叩いたり、Pythonをインストールしたりできる能力があることを想定しています。*1
なぜPythonを使うのか
高機能だからです。
- 便利な Model と Migration
- 管理ツール
- REST framework
環境
私は Mac を利用していますが、 Docker を使っていくので、Windwos でも問題ないはずです。
Django を入れる
Python はインストール済みだとします。Python は 2 と 3 があるのですが、普通はPython 3 を利用すると思います。
Mac の場合は python3 というコマンドで使えると思います。
$ python3 --version Python 3.7.6
Mac の場合は pip3 で django をインストールできます。
pip3 install django
Django アプリケーションの作成
django をインストールすると、 django-admin コマンドが使えるようになります。
今回は InvoiceCruiser という名前のアプリを作成します。ディレクトリ構成は以下の通りです。
- InvoiceCruiser (アプリのルートディレクトリ)
- app
- Dockerfile
- ...
mkdir InvoiceCruiser cd InvoiceCruiser django-admin startproject app
startproject で色々ディレクトリが作成されますが、後ほどコードを書く時に説明するので、ここでは気にしないことにします。
DockerでPythonの開発環境を作成する
requirements.txt の用意
Dockerをインストールするのに必要なパッケージを書いた
requirements.txt
を用意します。
Django==3.0.3
Dockerfile の作成
続いて、 Dockerfile
を作成します。
この Dockerfile はまだ動作確認用です。
FROM python:3 RUN mkdir -p /opt COPY requirements.txt /opt/requirements.txt COPY app /opt/app WORKDIR /opt RUN pip install -r requirements.txt WORKDIR app CMD python manage.py runserver
Docker のビルド
このDockerのビルドスプリクトを書きます。
bin/build-docker.sh
とします。
#!/bin/sh docker build --tag="invoice-cruiser-app"
このスクリプトを早速実行します。dockerはインストール済みであるとします。*2必ず Dockerfile
と同じディレクトリで実行してください。
sh bin/build-docker.sh
docker-compose
docker-compose.yml
も用意します。
version: "3" services: app: image: invoice-cruiser-app container_name: invoice-cruiser-app ports: - 8000:8000 command: python manage.py runserver 0.0.0.0:8000
docker を立ち上げます。
docker-compose up -d
localhost:8000 に接続するとDjangoの画面が見られるはずです。
ディレクトリが同期されるように
現状だと、アプリケーションがリアルタイムに更新されないので、 更新が同期されるようにします。*3
docker-compose.yml
を書き換える前に、
必ず docker-compose を終了させておきます。
終了する前に yml を書き換えてしまうと面倒なことになります。
docker-compose down
docker-compose.yml
を書き換えます。
./app
のように./
を書かないとうまく動かないようです。
version: "3" services: app: image: invoice-cruiser-app container_name: invoice-cruiser-app ports: - 8000:8000 # volumes を追記 volumes: - ,.app:/opt/app command: python manage.py runserver 0.0.0.0:8000
再び docker-compose を起動します。
docker-compose up -d
何も変わってないですが、 localhost:8000 で接続できます。
続きは次回
これで開発の準備は完了です。
何かわからないことがありましたら、コメントやtwitterなどで気軽に質問してください。 忙しくなければ答えます。
参考