初めに
DjangoとはPythonベースのフレームワークです。
今回はdockerを用いていきたいと思います。
OSはWindows 10を想定しています。
dockerが使えればOSは特に関係無いかと思います。
目次
- 環境を整える
- dockerのイメージをプルしてくる
- プルしてきたイメージを元にコンテナを作成する
- コンテナに入りpythonやdjangoをインストールする
- プロジェクトを作成してみる
- プロジェクトを作成する
- プロジェクトの中身を見る
- プロジェクトを動かしてみる
- サーバーを起動してみる
- 最後に
1. 環境を整える
まずは、入門するために開発環境を整えていこうと思います。
1. dockerのイメージをプルしてくる
まずはcmdを開きます。
今回開発したいフォルダを作成します。今回はCドライブ配下のデスクトップ上のdjangoフォルダで開発を行いたいと思います。
> cd C:\Users\USER-NAME\Desktop
> mkdir django
> cd django
今回の開発ではubuntuの最新版を用いようと思います。
> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
> docker pull ubuntu:latest
> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest f643c72bc252 16 hours ago 72.9MB
2. プルしてきたイメージを元にコンテナを作成する
1で作成したイメージを元にコンテナを作成します。
> docker run --name django-ubuntu -p 127.0.0.1:8000:8000 -v %cd%:/root -u 0 -itd f643c72bc252 /bin/sh
オプションの説明をします。
--name <NAME> ・・・ コンテナの名前をNAMEに設定する。
-p <ポート>:<コンテナのポート> ・・・ コンテナのポートをポートに割り当てる。
-v <フォルダ>:<コンテナのフォルダ> ・・・ フォルダにコンテナのフォルダをマウントする。(%cd%はcmdで現在のディレクトリを指す)
-u 0 ・・・ コンテナにrootユーザーとしてログインする。
-itd ・・・ /bin/shを疑似端末に割り当ててバックグラウンドで実行状態にする。
f643c72bc252 ・・・ イメージのID(docker imagesで表示されたIMAGE IDの値)
作成されたコンテナを確認します。
> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c9b27b34be02 f643c72bc252 "/bin/sh" 51 seconds ago Up 48 seconds 0.0.0.0:8000->8000/tcp django-ubuntu
3. コンテナに入りpythonやdjangoをインストールする
まずはコンテナに入ってみます。
docker exec -it c9b27b34be02 /bin/sh
ここでc9b27b34be02はdockerpsで表示されたCONTAINER IDの値です。
それではpythonがコンテナ内に存在しているかを確認しようと思います。
# python3 -V
/bin/sh: 2: python3: not found
#
ここでなぜ「python」ではなくて「python3」かと言うとubuntuの設定で元から入っているpythonと競合を起こして最悪の場合ubuntu自体を壊してしまうかもしれないからです。(今回のイメージの様に入っていない場合もあります。)
それではインストールしていこうと思います。
# apt-get update // apt-getの最新化
・・・
# apt-get install -y python3 // python3のインストール -yで聞かれる選択肢を全てyesで返してくれます
・・・
# python3 -V
Python 3.8.5
#
これでpythonがインストールされました。
試しに計算してみようと思います。
# python3
Python 3.8.5 (default, Jul 28 2020, 12:59:40)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 1+1
2
>>> 2*2
4
>>> 4-2
2
>>> 2/2
1.0
>>>
#
次にpythonのパッケージを管理するpipをインストールする。
# apt-get install -y python3-pip
・・・
# pip3 -V
pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)
#
djangoをインストールする
# pip3 install django
以上でインストールができました。
2. プロジェクトを作成してみる
1. プロジェクトを作成する
開発したいディレクトリに遷移します。
今回だとdjangoフォルダとマウントした/root配下に作成する。
# cd root
# mkdir projects
# cd projects
# mkdir myproject
# cd myproject
# pwd
/root/projects/myproject
# django-admin.py startproject myproject
# ls
myproject
それでは作成されたmyprojectの中身を見てみます。
2. プロジェクトの中身を見る
# tree myproject
myproject
|-- manage.py
`-- myproject
|-- __init__.py
|-- asgi.py
|-- settings.py
|-- urls.py
`-- wsgi.py
1 directory, 6 files
#
manage.py
プロジェクトを操作するためのファイルです。
特に触る必要はありません。
myproject
これはプロジェクトのディレクトリです。
init.py
myprojectディレクトリをPythonモジュールとして扱うようにpythonに指示する空ファイルです。
asgi.py
非同期Webサーバーおよびアプリケーションの新しいPython標準であるASGIとしてプロジェクトを実行するためのファイルです。
settings.py
プロジェクトの設定と構成を示し、初期のデフォルト設定が含まれています。
urls.py
ルーティングを行うファイルです。
wsgi.py
プロジェクトをWSGIとして実行するためのファイルです。
3. プロジェクトを動かしてみる
まずはマイグレーションを行います。
# cd myproject
# ls
manage.py myproject
# python3 manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying auth.0012_alter_user_first_name_max_length... OK
Applying sessions.0001_initial... OK
#
マイグレーションを行うと下記の様にいくつかフォルダが作成されます。(__pycache__はキャッシュ)
# tree myproject
myproject
|-- db.sqlite3
|-- manage.py
`-- myproject
|-- __init__.py
|-- __pycache__
| |-- __init__.cpython-38.pyc
| |-- settings.cpython-38.pyc
| `-- urls.cpython-38.pyc
|-- asgi.py
|-- settings.py
|-- urls.py
`-- wsgi.py
2 directories, 10 files
#
db.sqlite3
djangoではデフォルトでDBがsqliteに設定されています。
マイグレーションを行う事でsqliteの設定が行われます。
4.サーバーを起動してみる
いよいよサーバーが起動できるようになったので起動してみます。
# pwd
/root/projects/myproject/myproject
# ls
db.sqlite3 manage.py myproject
# python3 manage.py runserver
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
November 26, 2020 - 16:25:28
Django version 3.1.3, using settings 'myproject.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
3.最後に
http://127.0.0.1:8000/
に遷移してみて以下の画像の様にdjangoのwelcome画面が表示されれば正しくdjangoを設定することができています!
お疲れ様でした!
今後も連載していこうと思います。