LoginSignup
0
0

More than 1 year has passed since last update.

【Django】DjangoとAmazon S3で3Dモデルアップロードサイトを作る -環境構築-【1】

Last updated at Posted at 2021-12-23

はじめに

久しぶりの更新になりますが、
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の中身

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の中身

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の全文です。

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」は同じだったはずです。

以下の画面が開けていたら成功です。

image.png

以下では入れません。
注意してください。
Dockerfileでコマンドに記載している「0.0.0.0」はコンテナ内のIPだと思います。

今回はここまでにしようと思います。
次回は、models.pyの作成などにしようかなと思います。
ありがとうございました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0