Djangoでアプリケーションの開発をするため、Dockerで環境構築する方法をまとめました。
- dockerのインストール
- 作業用ディレクトリ作成
- ファイル準備
- ディレクトリ構成
- Dockerfileの作成
- requirements.txtの作成
- dockerイメージの作成
- dockerでコンテナの起動
- djangoプロジェクト作成
- djangoアプリの作成
- 開発用サーバ「Django」を起動
dockerのインストール
作業用ディレクトリ作成
macでターミナルを開いてDesktopに移動します。
cd ~/Desktop
docker用の作業ディレクトリを作成します。
mkdir dockers cd dockers mkdir django cd django mkdir src cd src
ファイル準備
touch Dockerfile tocuh requirements.txt
ディレクトリ構成
/django/ |-- Dockerfile |-- requirements.txt +-- src # ソース用ディレクトリ
Dockerfileの作成
FROM python:3 ENV PYTHONUNBUFFERED 1 RUN mkdir /code WORKDIR /code COPY requirements.txt /code/ RUN /bin/sh -c pip install -r requirements.txt COPY . /code
requirements.txtの作成
django
dockerイメージの作成
docker build -t django . [+] Building 534.8s (12/12) FINISHED => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 723B 0.0s => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [internal] load metadata for docker.io/library/python:3.7.5 4.3s => [1/7] FROM docker.io/library/python:3.7.5@sha256:88d11783cbbfa06f1c 505.1s => => resolve docker.io/library/python:3.7.5@sha256:88d11783cbbfa06f1c12 0.0s => => sha256:fbf9f709ca9f5d96dec78cc074963bc44f0497bb737 8.95kB / 8.95kB 0.0s => => sha256:ff95660c69375e19e287b2ea87ca9b4be008cd03 10.00MB / 10.00MB 37.4s => => sha256:88d11783cbbfa06f1c12ca50c73c340b0bff34bf599 2.14kB / 2.14kB 0.0s => => sha256:c3224f1163e8c349b5f7345090c9753b58c779de446 2.22kB / 2.22kB 0.0s => => sha256:16ea0e8c887910fe167687a0169991b4c1fc165 50.38MB / 50.38MB 219.9s => => sha256:50024b0106d53dcbd29889c65bc040439b2bb8947d 7.81MB / 7.81MB 38.7s => => sha256:9c7d0e5c0bc204b3a36e3f8ff320741da0bd022 51.79MB / 51.79MB 267.8s => => sha256:29c4fb388fdfef16e8278fba2b06d46e48d15 192.04MB / 192.04MB 495.5s => => sha256:8659dae93050c1ac9ec02542a046e4b40109f6ee1 5.79MB / 5.79MB 245.8s => => extracting sha256:16ea0e8c887910fe167687a0169991b4c1fc165257aab6b1 2.0s => => extracting sha256:50024b0106d53dcbd29889c65bc040439b2bb8947dac16c8 0.3s => => extracting sha256:ff95660c69375e19e287b2ea87ca9b4be008cd036e95d541 0.2s => => sha256:1da0ab556051b0a33943e34aa7aec09e19e2725 26.56MB / 26.56MB 322.5s => => sha256:e92ae9350d4a47e5dcfbae78a0a06db3691fa602e93e7 234B / 234B 271.3s => => extracting sha256:9c7d0e5c0bc204b3a36e3f8ff320741da0bd0225e0a67e22 2.3s => => sha256:c648cb7fc575dd1e2a3b60c09fbac445bf8f182f5 1.87MB / 1.87MB 282.9s => => extracting sha256:29c4fb388fdfef16e8278fba2b06d46e48d152e1b40f4347 7.4s => => extracting sha256:8659dae93050c1ac9ec02542a046e4b40109f6ee13d16472 0.3s => => extracting sha256:1da0ab556051b0a33943e34aa7aec09e19e27258bc09ceb8 1.1s => => extracting sha256:e92ae9350d4a47e5dcfbae78a0a06db3691fa602e93e7e6f 0.0s => => extracting sha256:c648cb7fc575dd1e2a3b60c09fbac445bf8f182f5ae069a7 0.2s => [internal] load build context 0.0s => => transferring context: 142.34kB 0.0s => [2/7] RUN mkdir /code 2.0s => [3/7] WORKDIR /code 0.0s => [4/7] COPY requirements.txt ./ 0.0s => [5/7] RUN pip install --upgrade pip 5.6s => [6/7] RUN pip install -r requirements.txt 16.8s => [7/7] ADD . /code 0.0s => exporting to image 0.8s => => exporting layers 0.8s => => writing image sha256:298f8f5fb22661aacc4325e93eead2b2e9ef10763bbf0 0.0s => => naming to docker.io/library/django 0.0s
「docker images」コマンドでイメージが作成できていることを確認します。
「REPOSITORY」の項目に「django」があれば、正常にイメージが作成されています。
docker images REPOSITORY TAG IMAGE ID CREATED SIZE django latest 298f8f5fb226 2 hours ago 965MB nginx latest 992e3b7be046 3 months ago 133MB jupyter/scipy-notebook latest 1ee9f9df99a3 3 months ago 2.67GB hello-world latest bf756fb1ae65 12 months ago 13.3kB
dockerでコンテナの起動
djangoをdckerで動かすために、「-p」オプションでポートフォワーディングをします。
また、ホストとコンテナで「src」ディレクトリを共有するために、「-v」オプションでマウントをします。
docker run -itd -p 127.0.0.1:8000:8000 -v /Users/test/Desktop/dockers/django/src:/code --name test01 django
djangoプロジェクト作成
djangoのプロジェクトを作成するので「src」フォルダへ移動し、以下のコマンドを実施します。
cd src docker exec test01 django-admin startproject djangotest .
djangoアプリの作成
docker exec test01 python3 manage.py startapp sample01
開発用サーバ「Django」を起動
$ docker exec test01 python3 manage.py runserver 0.0.0.0:8000 Watching for file changes with StatReloader Performing system checks... System check identified no issues (0 silenced). You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions. Run 'python manage.py migrate' to apply them. January 21, 2021 - 16:22:50 Django version 3.1.5, using settings 'djangotest.settings' Starting development server at http://0.0.0.0:8000/ Quit the server with CONTROL-C.
ブラウザを立ち上げて「http://localhost:8000」を入力して以下のページが表示されれば完了です。