Django
Docker
IT
Python
DockerをつかってDjango環境を構築する
12:33
DockerをつかってPythonのDjango環境を構築する手順を紹介します。
目次
Dockerfile
Visual Stidio CodeでDockerfileを作成します。Dockerfileの内容は以下の通りです。
FROM python:3.9
WORKDIR /usr/app
COPY requirements.txt ./
RUN pip install -r requirements.txt
COPY . .
WORKDIR /usr/app/src
# ==============================================================================
# 初回時のみコメントアウト
# WORKDIR /usr/app/src/myapp
# EXPOSE 8000
# CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
requirement.txt
requirement.txtファイルを作成します。requirement.txtはpipでinstallするモジュールを記載します。今回はDjangoを使用するためrequirement.txtにDjangoを記載します。
Django
資産配置用フォルダ作成
src用のフォルダを作成します。
Dockerイメージのビルド
Docker buildを使ってイメージファイルを作成します。
docker build -t my-django-app .
実行すると以下の通り結果が表示されます。
Sending build context to Docker daemon 4.608kB
Step 1/8 : FROM python:3.9
---> e32be9a6f71f
Step 2/8 : RUN apt-get update
---> Running in 2e04a55c9823
Get:1 http://deb.debian.org/debian buster InRelease [121 kB]
Get:2 http://security.debian.org/debian-security buster/updates InRelease [65.4 kB]
Get:3 http://deb.debian.org/debian buster-updates InRelease [51.9 kB]
Get:4 http://security.debian.org/debian-security buster/updates/main amd64 Packages [266 kB]
Get:5 http://deb.debian.org/debian buster/main amd64 Packages [7907 kB]
Get:6 http://deb.debian.org/debian buster-updates/main amd64 Packages [7848 B]
Fetched 8420 kB in 4s (1980 kB/s)
Reading package lists...
Removing intermediate container 2e04a55c9823
---> f390f7d92fae
Step 3/8 : WORKDIR /usr/app
---> Running in fd4a2e0b0c1b
Removing intermediate container fd4a2e0b0c1b
---> ee9088bf7857
Step 4/8 : COPY requirements.txt ./
---> 039576f2a9f5
Step 5/8 : RUN pip install -r requirements.txt
---> Running in 3bb75f601e36
Collecting Django
Downloading Django-3.1.6-py3-none-any.whl (7.8 MB)
Collecting asgiref<4,>=3.2.10
Downloading asgiref-3.3.1-py3-none-any.whl (19 kB)
Collecting sqlparse>=0.2.2
Downloading sqlparse-0.4.1-py3-none-any.whl (42 kB)
Collecting pytz
Downloading pytz-2021.1-py2.py3-none-any.whl (510 kB)
Installing collected packages: sqlparse, pytz, asgiref, Django
Successfully installed Django-3.1.6 asgiref-3.3.1 pytz-2021.1 sqlparse-0.4.1
Removing intermediate container 3bb75f601e36
---> 7f86788fcfee
Step 6/8 : COPY . .
---> 4711f881890b
Step 7/8 : WORKDIR /usr/app/src
---> Running in af420e162136
Removing intermediate container af420e162136
---> db55eab8989c
Step 8/8 : WORKDIR /usr/app/src/myapp
---> Running in 2693fa12b3b4
Removing intermediate container 2693fa12b3b4
---> de82e2f48f3e
Successfully built de82e2f48f3e
Successfully tagged my-django-app:latest
コンテナ起動
コンテナを起動します。
docker run -it --name some-django-app -v /home/aw/work_dir/02_project/src:/usr/app/src -d my-django-app
起動すると以下のようになります。
cec69067e4ec95aac90da51b0a511c32dc6cd48adccd54e5c2e3d24605af5aa9
コンテナログイン
コンテナにログインします。
docker exec -it some-django-app sh
Djangoプロジェクト作成
Djangoプロジェクトを作成します。
django-admin startprojecr myapp
ALLOWED_HOSTS設定
ALLOWED_HOSTSにIPアドレスを設定します。
設定ファイルを変更します。権限で書き込みができない場合があるため権限を変更します。
chmod 766 settings.py
ALLOWED_HOSTSにIPアドレスを設定します。
・・・略・・・
ALLOWED_HOSTS = ["192.168.0.19"]
・・・略・・・
コンテナ削除
プロジェクトを作成後再度イメージファイルを作成しなおします。
コンテナを削除するためにコンテナの停止を行います。
ステータスを確認します。
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1c66cb16bb03 my-django-app "python manage.py ru…" About an hour ago Up About an hour some-django-app
コンテナを停止します。
docke stop 1c66cb16bb03
コンテナを削除します。
docke rm 1c66cb16bb03
Dockerfile修正
Dockerfileを修正します。コメントアウトを外します。起動時にmanager.pyを実行するようにします。(起動時にサーバが自動で起動します)
FROM python:3.9
WORKDIR /usr/app
COPY requirements.txt ./
RUN pip install -r requirements.txt
COPY . .
WORKDIR /usr/app/src
# ==============================================================================
# 初回時のみコメントアウト
WORKDIR /usr/app/src/myapp
EXPOSE 8000
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
Dockerイメージの再ビルド
再ビルド行います。
docker build -t my-django-app .
Sending build context to Docker daemon 14.85kB
Step 1/10 : FROM python:3.9
---> e32be9a6f71f
Step 2/10 : RUN apt-get update
---> Running in f0e9f62048e4
Get:1 http://security.debian.org/debian-security buster/updates InRelease [65.4 kB]
Get:2 http://deb.debian.org/debian buster InRelease [121 kB]
Get:3 http://deb.debian.org/debian buster-updates InRelease [51.9 kB]
Get:4 http://security.debian.org/debian-security buster/updates/main amd64 Packages [266 kB]
Get:5 http://deb.debian.org/debian buster/main amd64 Packages [7907 kB]
Get:6 http://deb.debian.org/debian buster-updates/main amd64 Packages [7848 B]
Fetched 8420 kB in 4s (1994 kB/s)
Reading package lists...
Removing intermediate container f0e9f62048e4
---> 8167da2e9661
Step 3/10 : WORKDIR /usr/app
---> Running in 1e266e1c5fda
Removing intermediate container 1e266e1c5fda
---> bf462d09449b
Step 4/10 : COPY requirements.txt ./
---> 02ab2f404e45
Step 5/10 : RUN pip install -r requirements.txt
---> Running in 644084cf1dd6
Collecting Django
Downloading Django-3.1.6-py3-none-any.whl (7.8 MB)
Collecting sqlparse>=0.2.2
Downloading sqlparse-0.4.1-py3-none-any.whl (42 kB)
Collecting asgiref>4,<=3.2.10
Downloading asgiref-3.3.1-py3-none-any.whl (19 kB)
Collecting pytz
Downloading pytz-2021.1-py2.py3-none-any.whl (510 kB)
Installing collected packages: sqlparse, pytz, asgiref, Django
Successfully installed Django-3.1.6 asgiref-3.3.1 pytz-2021.1 sqlparse-0.4.1
Removing intermediate container 644084cf1dd6
---> 5ccdc0722956
Step 6/10 : COPY . .
---> a367026e615f
Step 7/10 : WORKDIR /usr/app/src
---> Running in 1ac1a7ac40d2
Removing intermediate container 1ac1a7ac40d2
---> a51ab3a8294b
Step 8/10 : WORKDIR /usr/app/src/myapp
---> Running in 5dbc3ca51513
Removing intermediate container 5dbc3ca51513
---> 3686add52065
Step 9/10 : EXPOSE 8000
---> Running in 1840834b2d60
Removing intermediate container 1840834b2d60
---> 86868bdb1226
Step 10/10 : CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
---> Running in e5c760f2bcdc
Removing intermediate container e5c760f2bcdc
---> 0742f8700c92
Successfully built 0742f8700c92
Successfully tagged my-django-app:latest
Dockerコンテナ起動
dockerのコンテナを起動します。
docker run --network host --name some-django-app -v /home/aw/work_dir/02_project/src:/usr/app/src -d my-django-app
1c66cb16bb031c020d69c65a1d784de82e1bacb37cca259f0cc00dce94f22690
ブラウザアクセス
ブラウザを起動してURLを入力します。ノートパソコン上で動作しているのでマシンのIPアドレスを指定します。
http://192.168.0.19:8000
上記のように画面が表示されれば環境構築は大丈夫です。
0 件のコメント:
コメントを投稿
コメントをお待ちしています。