はじめに
久しぶりの更新になりますが、
Djangoで3Dモデルのアップロードするサイトを作る予定があるので
作る過程を残しておこうかなと思いました。
あと単純にDjango4.0を触ってみようかなというところ・・・。
環境
Django以外特にこだわりはないです。
追加したものがあったら随時追加します。
ライブラリ | バージョン |
---|---|
Django | 4.0 |
psycopg2 | 2.8 |
環境構築
Dockerで環境を作りました。
Githubにソースコード含めDockerの関連ファイルを置いておきます。
1.DockerFileの作成
ソースファイルの構成
Docker関連のファイルは以下のように配置しています。
django-s3-3dmodel/
└ docker/
├ docker-compose.yml
├ Dockerfile
└ requirements.txt
Dockerfileの中身
# syntax=docker/dockerfile:1
FROM python:3
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
requirements.txtの中身
Django==4.0
psycopg2>=2.8
docker-compose.ymlの中身
①まずdbのイメージを作っています。
「db:」のところの名前は任意だと思うので、好きなイメージ名を付けてください。
②「volumes:」ではdbのデータの保存先を記載しています。
「:」の左側がコンテナ外?自分のローカルのデータで、
右側が、コンテナ内のデータのパスになります。
③「environment:」ではデータベースの名前、ユーザー名、パスワードを設定しています。
db:
image: postgres
volumes:
- postgres_data:/var/lib/postgresql/data
environment:
- POSTGRES_NAME=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
次に「web:」のところになります。ここもさっきと同様任意の名前が付けられると思います。
④「build:」ではDockerfileのパスを示していたと思います。
Dockerfileをもとにイメージの作成と、コンテナの作成を行います。
⑤「command:」では「docker-compose up」時に実行されるコマンドが記載できます。
「python manage.py runserver 0.0.0.0:8000」と記載することで、
docker起動時にdjangoが起動されます。
※ここで「0.0.0.0:」を入れないとサーバーの起動はできますが、
URLを打ってもページが開けませんでした。
コンテナ内のIPが決まっているようで、「0.0.0.0:」を記載しない場合、
自動的に「127.0.0.1」で起動されてしまうみたいなので、それでは駄目なようです。
⑥「environment:」ここに先ほどのデータベースの情報を入れておくと、
python内であとで呼び出せます。settings.pyで使うと思います。
⑦「depends_on:」ここに先ほどのイメージ名「db」を入れておくと、紐づけが行えます。
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- ../:/code
ports:
- "8000:8000"
environment:
- POSTGRES_NAME=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
depends_on:
- db
以下docker-compose.ymlの全文です。
services:
db:
image: postgres
volumes:
- postgres_data:/var/lib/postgresql/data
environment:
- POSTGRES_NAME=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- ../:/code
ports:
- "8000:8000"
environment:
- POSTGRES_NAME=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
depends_on:
- db
volumes:
postgres_data:
2.Djangoプロジェクトの作成
以下のコマンドでDjangoプロジェクトの作成ができます。
「djangos3pjt」部分は任意なので、ご自由に。
「-」は使うとエラーが出たような気がしますが、、
「--rm」を付けておくと、runした際に作成されるイメージを実行後、削除できるようで便利です。
docker-compose run --rm web django-admin.py startproject djangos3pjt .
3.Djangoプロジェクトの起動
ここまでくれば起動まであと少しです。
以下のコマンドを打ってみましょう
docker-compose up
何かいろいろ出ると思いますが、以下のような文が出たら成功していると思います。
web_1 | Starting development server at http://0.0.0.0:8000/
あとは以下のURLに入るだけです。
以下でも入れると思います。
「localhost」と「127.0.0.1」は同じだったはずです。
以下の画面が開けていたら成功です。
以下では入れません。
注意してください。
Dockerfileでコマンドに記載している「0.0.0.0」はコンテナ内のIPだと思います。
今回はここまでにしようと思います。
次回は、models.pyの作成などにしようかなと思います。
ありがとうございました。