現場でメンバーとしてシステム開発の一部を担っているものの、製品の仕様理解やインフラを含めてシステム全体がどう構築されているのか、把握するのは難しいと思ったことはないでしょうか。
今回は、Visual Studio Codeで「環境構築をしてみる」というテーマで、Dockerを使ってDjangoの環境構築をしていきたいと思います。
まず、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イメージを使用することもできます。
また、Dockerイメージをビルドして実行するための命令は「Dockerfile」というテキストファイルに記載されています。
ここでは、Docker Desktop for Windows(個人利用で無料)のインストールから進めていきましょう。
● Docker Desktopのインストール
公式のWebサイトから、インストーラをダウンロードしてください。
https://www.docker.com/products/docker-desktop/
ダブルクリックしてインストールします。
完了したら、Docker Desktopの設定をします。
● Docker Desktopの設定
設定画面からGeneralを選択し、「Use the WSL2 based engine」が選択されていることを確認します
メニューのResourceから[WSL INTEGRATION] を選択後、インストールしたubuntuのディストリビューションを有効にし、「Applay &Restart」を押下します。
● Docker Desktopインストール後の動作確認
インストールしたUbuntuを起動し、以下のコマンドを入力します。
以下のように表示されれば、インストール成功です。
コンテナの動作確認もしていきます。
以下のように表示されれば、正常に動作しています。
以上で、インストール後の動作確認は完了です。
*Docker Desktop for Windowsを利用しない場合は、以下の記事を参考になさってください。
参考:WSL2のubuntu20.04にdockerのLINUX版をインストールする
● Dockerを使用したDjangoの開発環境構築
それでは、Dockerを使用して、Djangoの開発環境を作成してみましょう。以下の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つのコンテナが起動する想定で、記載)
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の作成をします
Django==3.2.6
psycopg2
psycopg2とはPythonからPostgreSQLへアクセスするためのライブラリ(ドライバ)です。Djangoのバージョンは「python3 -m django --version」で調べてください。
これでコンテナを起動する為の設定ファイルが作成できましたので、Django のプロジェクトを作成します。
docker-compose runでymlに定義したWebサービスを指定し、それ以降はwebサービス起動時に実行するコマンドです。
setting.py
どのホストやIPアドレスからアクセスを許可するかを設定します。
後は、以下のコマンドで、コンテナを起動します。
localhost:8000でデフォルトのDjangoの画面が表示されれば完了です。
Visual Studio Codeはプログラミングに特化したエディタとして大変便利で人気があります。 このエディタで開発をしてみたいと考えている方は、(今回はDjangoのインストールまでの流れを確認しましたが)環境構築を進める際に、この記事を参考にしていただければ幸いです。
以上となります。