10
8

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 5 years have passed since last update.

Visual Studio CodeとDockerを用いてDjangoの開発環境をサクっと構築する。

Last updated at Posted at 2019-07-29

本記事を真似して環境構築を行うと5分あればDjangoの開発環境を構築できる。
Djangoが使用されているWEBサイトには以下のものがあります。

対象者

  • 簡単にプログラミングを始めたい方
  • PythonでWEBアプリを作りたい方
  • Dockerでの開発環境を構築に興味がある方

開発環境

  • macbook 12inch
  • macOS Mojave バージョン10.14.4
  • VisualStudio Code(以下、VSCodeで略す) バージョン1.34.0
  • Docker Desktop for Mac

スクリーンショット 2019-05-23 3.09.26

スクリーンショット 2019-07-29 15.04.10

前提条件

  • VSCode バージョン1.34.0をインストールしておく
    • 拡張機能「Docker」をインストールしておく
  • Docker Desktop for Macをインストールしておく

任意のフォルダに3ファイルを用意する

ここではDockerフォルダを用意してその中に以下の3ファイルを作成する。

  1. requirements.txt
  2. Dockerfile
  3. docker-compose.yml

スクリーンショット 2019-07-29 15.32.57

requirements.txtを編集する

Django==2.2.3
psycopg2
psycopg2-binary

Dockerfileを編集する

FROM python:3.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/

docker-compose.ymlを編集する

version: "3"

services:
  db:
    container_name: postgres-django
    image: postgres:11
    volumes:
      - ./data/postgres:/var/lib/postgresql
    ports:
      - "5432:5432"
    environment:
      - POSTGRES_DATABASE=django
      - POSTGRES_USER=django
      - POSTGRES_PASSWORD=django
  web:
    container_name: django
    build: .
    volumes:
      - ./data/django:/code
    tty: true
    ports:
      - 8000:8000
    depends_on:
      - db

Dockerフォルダ上で右クリックして「ターミナル」をクリックする

スクリーンショット 2019-07-29 15.35.19

VSCodeの右下あたりにターミナルが起動する。
スクリーンショット 2019-07-29 16.17.11

docker-composeからDocker Containerを作成する。

ターミナル上で下記のコマンドを実行する。

// -dオプションを付加するとデーモン(サービス)として起動できる
docker-compose up -d

以下のようなコマンドがダダダダと流れる。
スクリーンショット 2019-07-29 15.47.06

VSCodeのDocker拡張機能をみるとContainerが2つできていることが確認できる。

  1. docker_web
  2. postgres:11

スクリーンショット 2019-07-29 15.51.17

Djangoのプロジェクトとしてhogeプロジェクトを作成する

なにはともあれプロジェクトを作成しないと始まらないのでhogeプロジェクトを作成する。

Containers欄からWeb(Django)を選択して右クリック「Attach Shell」をクリックする。
新たなターミナルが表示される。
スクリーンショット 2019-07-29 18.34.42

そのターミナルにて下記のコマンドを実行する。

// django-admin startproject プロジェクト名 でプロジェクトを作成する
django-admin startproject hoge

hogeプロジェクトが作成され以下のような構造となる。
スクリーンショット 2019-07-29 18.53.58

settings.pyの設定

  • DATABASE設定をpostgresqlに切り替える。
// 変更前
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

// 変更後
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'HOST': 'db',
    }
}
  • ALLOWED_HOSTSを設定する。
// 変更前
ALLOWED_HOSTS = []

// 変更後
ALLOWED_HOSTS = ['*']

Djangoプロジェクトの起動

ターミナルにて以下のコマンドを実行してブラウザでlocalhost:8000でアクセスする。

python hoge/manage.py runserver 0.0.0.0:8000

ロケット画面が表示されればOK

あとがき

  • DjangoのDATABASE設定を手動で切り替えているのでちょっと微妙
    • 切り替え後のdocker imageを作成した上で構築する
    • DATABASE設定をdocker側にもっていく(いけるのかわからないw)
  • docker execを使用する記事をよく見かけるがわかりづらいので(私だけでしょうか・・・)Django側にて操作することにしています。
10
8
1

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
10
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?