inglow Blog

Tech Blog
エンジニアブログ

Dockerを用いてDjangoの開発環境を構築してみる

2020.09.11

このエントリーをはてなブックマークに追加

はじめに

こんにちは!
インターン生として新しく開発チームに入りました戸川です。

最近はインフラにとても興味があって、現場でよく使われていると聞くDockerについて学んでいこうと思います。

Dockerとはコンテナ型の仮想環境を作成・配布・実行できるプラットフォームとのことです。Dockerを使えばWebアプリケーションだけでなくサーバーの設定などのインフラもまとめて管理できて、かつバージョンやOSの差を気にすること無く環境の構築ができるというメリットがあります。

ちなみにPythonの仮想環境としばしば比較されることがありますが、Pythonの仮想環境はあくまでPythonの依存関係のみをカプセル化し、DockerはOS全体をカプセル化するという違いがあります。

今回のような小さいアプリだとPythonの仮想環境を使ったほうがむしろ楽かもしれませんが、Dockerに慣れるためにあえてこちらを選択してDjango + PostgreSQLなアプリケーションを作っていきます。

Docker for Mac/Windowsをインストール

公式サイトからDockerアカウントを登録し、Docker desktop for Mac/Windowsをインストールします。

インストールできたら次のコマンドで動作するか確認します。

ここで確認したdocker-composeは、いくつかのコンテナをまとめて構築・実行できるものです。

適当なディレクトリに移ります。

ディレクトリ直下に次の3つのファイルを作成します。

  • Dockerfile
  • docker-compose.yml
  • requirements.txt

Dockerfileの中身を次のように書きます。

requirements.txtに必要なソフトウェアを記述します。

docker-compose.ymlには各サービスの構成定義を書きます。

volumesの記述をしてあげることでデータベースの中身を永続化しています。

プロジェクトの作成

$ docker-compose run web django-admin.py startproject dockerblog .とコマンドを打ちDjangoプロジェクトを開始します。

成功したら各ファイルが生成されます。

データベースに接続するためにdockerblog/settings.pyのDAEABASESについて次のように書き換えます。

$ docker-compose up -dでコンテナの構築・起動しましょう!
-dオプションでデタッチモードで起動してくれます。

できました!
$ docker psコマンドで起動しているコンテナを確認できます。

$ docker-compose exec <service> <command>で起動中のコンテナに対してコマンドを打てます。

blogアプリケーションを作成する場合は次の通り

作業を中断する場合には

$ docker-compose stop

再開する場合には

$ docker-compose restart

で再びコンテナを起動できます。

おわりに

以上がDjangoの開発環境をDockerに乗せる方法でした!

今回はアプリケーションとデータベースを簡単に扱っただけなのでDockerの便利さをそこまで感じることが出来なかったかもしれません。

実際には求める環境に近いDockerイメージをDocker Hubからダウンロードして自分好みの環境を作れたり、コンテナをそのまま本番サーバーにデプロイすることが出来たりと多くのメリットを持っています!

これからもインフラについて色々勉強していきますが、最近よく扱うAWSについてもっと体系的に学んでみようと思っています。

SAAというAWSについての資格取得を一つの目標に頑張っていきます!

Related Blog
関連記事

2020.09.22
道路標識イラストをCSSで作ってみた
2020.09.15
cssだけでルーレット作ってみた