1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Django(Python)アプリをDockerで環境構築したメモ

Last updated at Posted at 2020-09-18

はじめに

  • Python,Djangoのwebフレームワークを学びたかったが、環境構築が複雑だったため、仮想環境で立ちあげることにした。
  • 基本はDockerの公式ページ通りだが、公式通り書くとエラーがおきるため、一部修正した
  • 公式はDjango × Postgresの構成

環境

  • Docker on Mac

追記

  • 2020/9/22 コマンドを修正
  • 2020/10/5 わかりやすい名前に変更
  • 2020/12/14 Djangoのバージョンを>=3.0,<4.0に更新

手順(準備と立ち上げ)

プロジェクト用のディレクトリを作成し、移動。 ここではsampleappというアプリ名で進める。

MacBook-Air ~ % mkdir sampleapp
MacBook-Air ~ % cd sampleapp
MacBook-Air sampleapp % 

Dockerfileを作成し、エディターで開く。

MacBook-Air sampleapp % touch Dockerfile

Dockerfileを編集し、保存。

`Dockerfile`

FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /アプリ名
WORKDIR /アプリ名
ADD requirements.txt /アプリ名/
RUN pip install -r requirements.txt
ADD . /アプリ名/

requirements.txt を作成し、以下のように編集する

MacBook-Air sampleapp % touch requirements.txt
`requirements.txt`

Django>=3.0,<4.0
psycopg2

docker-compose.ymlを作成し、以下のように編集する

MacBook-Air sampleapp % touch docker-compose.yml
`docker-compose.yml`

version: '3'

services:
  db:
    image: postgres
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
  web:
    build: .
    command: python3 manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/アプリ名
    ports:
      - "8000:8000"
    depends_on:
      - db

これで3つのファイルが準備が完了したのでアプリを立ち上げる。
Djangoでは自動生成の管理インタフェースがあるため、今回はmanagerという名前の管理インターフェイスを作成する

MacBook-Air sampleapp % docker-compose run web django-admin startproject manager .
Creating network "sampleapp_default" with the default driver
Building web
Step 1/7 : FROM python:3
 ---> 28a4c88cdbbf
~
Creating sampleapp_db_1 ... done
Creating sampleapp_web_run ... done

立ち上がったら、次はデータベースへの接続設定をおこなう
さきほどのコマンドで生成された設定ファイルの中を以下のように編集し、保存。

`manager/settings.py`

~
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'postgres',
        'USER': 'postgres',
        'PASSWORD': 'postgres',
        'HOST': 'db',
        'PORT': 5432,
    }
}
~

コンテナを立ち上げ、以下の表示が一番下に表示されたら、http://0.0.0.0:8000/ にアクセス

MacBook-Air sampleapp % docker-compose up
~
Starting development server at http://0.0.0.0:8000/
web_1  | Quit the server with CONTROL-C.

It worked!
Congratulations on your first Django-powered page.と表示されたら成功.

##作成したdockerのファイル
https://github.com/yongjugithub/djangodocker

##参考文献
https://docs.docker.jp/compose/django.html#id2
https://docs.djangoproject.com/ja/3.1/

1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?