2
3

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 1 year has passed since last update.

VSCode / WSL / DockerでDjangoの環境構築をしてみる【Window10, 11版】

Last updated at Posted at 2022-07-21

現場でメンバーとしてシステム開発の一部を担っているものの、製品の仕様理解やインフラを含めてシステム全体がどう構築されているのか、把握するのは難しいと思ったことはないでしょうか。

今回は、Visual Studio Codeで「環境構築をしてみる」というテーマで、Dockerを使ってDjangoの環境構築をしていきたいと思います。

image.png

まず、VSCodeで開発をする際に、設定(RemoteWSLの拡張機能を入れておく)をしておくと、Windows上での作業でありながらターミナルタブを開けば標準的な開発環境を開いて作業することができます。

● WSLの設定 

コマンドプロンプトやPowerShellではできないbash操作もWSL(Windows Subsystem for Linuxの略で、Windows上でLinuxを利用できるツール)ならできるようになるので、VSCCodeでgit(bash)を使う場合にも開発しやすくなると思います。

準備として、VSCodeでRemoteWSL拡張機能を使うにあたって行う初期設定(Windows10版)の実行環境セットアップについてみていきましょう。

[手順書のダウンロードはこちらから]


● Dockerとは? 

Dockerとは、コンテナ型仮想環境を作成、実行、管理する為のプラットフォームのことです。

今回のように、Pythonのアプリケーションを実行したい場合に、Pythonがインストールされたコンテナを起動することで、即座にアプリケーションを実行して動作を確認することができます。

 アプリケーション、ライブラリ、設定ファイルなどのアプリケーション実行に必要なものを一式まとめたものを「Dockerイメージ」といい、保存して他のサーバーに持っていくことで、同じ環境(コンテナ)を再現することができます。DockerHub上に共有されている、クラウド上のDockerイメージを使用することもできます。
image.png
 また、Dockerイメージをビルドして実行するための命令は「Dockerfile」というテキストファイルに記載されています。

 ここでは、Docker Desktop for Windows(個人利用で無料)のインストールから進めていきましょう。


● Docker Desktopのインストール 

公式のWebサイトから、インストーラをダウンロードしてください。
https://www.docker.com/products/docker-desktop/

image.png

ダブルクリックしてインストールします。
image.png
完了したら、Docker Desktopの設定をします。

● Docker Desktopの設定

設定画面からGeneralを選択し、「Use the WSL2 based engine」が選択されていることを確認します
image.png

メニューのResourceから[WSL INTEGRATION] を選択後、インストールしたubuntuのディストリビューションを有効にし、「Applay &Restart」を押下します。
image.png

● Docker Desktopインストール後の動作確認

インストールしたUbuntuを起動し、以下のコマンドを入力します。
image.png
以下のように表示されれば、インストール成功です。
image.png

コンテナの動作確認もしていきます。
image.png
以下のように表示されれば、正常に動作しています。
image.png
 以上で、インストール後の動作確認は完了です。

*Docker Desktop for Windowsを利用しない場合は、以下の記事を参考になさってください。
 参考:WSL2のubuntu20.04にdockerのLINUX版をインストールする

● Dockerを使用したDjangoの開発環境構築

それでは、Dockerを使用して、Djangoの開発環境を作成してみましょう。

image.png

まずはディレクトリを作成しましょう。
image.png

作成したディレクトリに移動します。
image.png

以下の3つのファイルを作成します。

Dockerfile(Dockerイメージをビルドして実行するための命令)

docker-compose.yml(アプリケーション実行に必要なコンテナの構造化されたデータ)
requirements.txt  (対象のプロジェクトにinstallする必要があるパッケージリスト)

Dockerfileの作成をします。

FROM python:3
ENV PYTHONUNBUFFERED 1

# ビルド時に/codeというディレクトリ作成
RUN mkdir /code
WORKDIR /code

# requirements.txtを/code/にコピー
COPY requirements.txt /code/
# requirements.txtを基にパッケージリストをインストール
RUN pip install -r requirements.txt
COPY . /code/

ここで、Dockerfileの記載方法について

FROMは、イメージを作成する際に、基になるイメージを指定する命令で、
RUNはイメージビルドの際に実行するコマンドを指定する命令
COPY は、新しいファイルやディレクトリをコピーするということを押さえておきましょう。

docker-compose.ymlの作成をします。(「db」と「web」の2つのコンテナが起動する想定で、記載)

docker-compose.yml
version: '3'
services:
  db:
    image: postgres
    ports:
      - "5432:5432"
    volumes:
      - ./db_data:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
  web:
    build: .
    command: python3 manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db

requirements.txtの作成をします

requirements.txt
Django==3.2.6
psycopg2

psycopg2とはPythonからPostgreSQLへアクセスするためのライブラリ(ドライバ)です。Djangoのバージョンは「python3 -m django --version」で調べてください。

これでコンテナを起動する為の設定ファイルが作成できましたので、Django のプロジェクトを作成します。
image.png
docker-compose runでymlに定義したWebサービスを指定し、それ以降はwebサービス起動時に実行するコマンドです。

setting.py
image.png
どのホストやIPアドレスからアクセスを許可するかを設定します。
image.png

後は、以下のコマンドで、コンテナを起動します。
image.png
localhost:8000でデフォルトのDjangoの画面が表示されれば完了です。


Visual Studio Codeはプログラミングに特化したエディタとして大変便利で人気があります。 このエディタで開発をしてみたいと考えている方は、(今回はDjangoのインストールまでの流れを確認しましたが)環境構築を進める際に、この記事を参考にしていただければ幸いです。

以上となります。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?