見出し画像

Django,MySQL,phpMyAdminの環境をDockerで構築する

こちらのマガジンでご紹介したタレントダッシュボードについて、環境面の説明を番外編としてまとめておきます。

Dockerとは

Dockerとは、コンテナ型の仮想化プラットフォームのことです。
Windows、Mac、各種Linuxディストリビューションへ導入することができ、例えば自分のPCの中にLinuxサーバ(Dockerではコンテナと呼びます)を立てたり、社内LANに存在する端末をSQLサーバとして運用することができるようになります。

コード化されたファイルを共有すればいつでも同じ環境を作ることができ、環境を変更する、作り直すことも容易であるため、スモールかつクイックにサービスを立ち上げたいときなどに非常に有力な手段となります。

構築する環境の概要

今回は3つのサーバを立ち上げ、それらを利用してタレントダッシュボードを構築します。

サービス用Webサーバ
Djangoを動かすためのサーバです。

MySQLサーバ
サービス用Webサーバが参照するデータを保管しておくためのサーバです。

phpMyAdminサーバ
MySQLサーバのデータ管理をGUIで行うためのサーバです。

なお、上記のサーバは個別に立ち上げるのではなく、複数のコンテナを一括管理できる「Docker Compose」を利用し、まとめて立ち上げます。

以下にて、Windows端末を利用しDjango、MySQL、phpMyAdminの環境をDockerで構築する方法をまとめます。

環境構築手順①:Docker Desktop をインストール

配布ページ(Windows/Mac)を参考に、Docker Desktopをインストールします。Windows版およびMac版については、表示されている手順でインストールを行えば、Docker Composeもインストールされます。

必要があれば、クイックスタートを読んで操作に慣れてください。

環境構築手順②:docker-compose.ymlを準備する

3つのサーバを立ち上げるための設計図となる、docker-compose.ymlを準備します。

[docker-compose.yml]

version: '3'

services:
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_USER: 'django'
      MYSQL_PASSWORD: 'django'
      MYSQL_DATABASE: 'django'
    ports:
      - 3306:3306
    volumes:
      - mysql:/var/lib/mysql
      - ./tmp/mysqld:/var/run/mysqld
  web:
    build: .
    command: python3 manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
      - ./tmp/mysqld:/run/mysqld
    ports:
      - "8000:8000"
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    restart: always
    ports:
      - "8080:80"
    environment:
      PMA_HOST: db
      MYSQL_ROOT_PASSWORD: root
      
volumes:
  mysql:
    driver: local

services配下に「db」「web」「phpmyadmin」と3つの記載がありますが、これがそれぞれMySQLサーバ、サービス用Webサーバ、phpMyAdminサーバを指します。

db(MySQLサーバ)
"image:" で指定している通り、公式が配布しているdocker imageをpullしてサーバを立てます。例ではバージョン5.7を利用していますので、必要に応じて変更してください。
"ports:" では、ホスト側のポート3306とコンテナ側のポート3306をポートフォワーディングしますよ、と宣言をしています。当然ですが、これを指定しないとホスト側からアクセスすることができません。
"volumes: "では、ホスト側のディレクトリとコンテナ側のディレクトリを紐付けています。これを指定することで、コンテナを終了してもデータが失われないようになります(永続化)。

web(サービス用Webサーバ)
"build:" では、サーバを構築するための設計図といえるDockerfileの参照先を指定しています。この例では、docker-compose.ymlと同じディレクトリにDockerfileを置いています。
"command: "では、サーバ起動時に実行するコマンドを指定します。Djangoには試験用のwebサーバが内蔵されており、これを起動するためのコマンドを記載しています。

phpmyadmin(phpMyAdminサーバ)
"image:" で指定している通り、公式が配布しているdocker imageをpullしてサーバを立てます。

環境構築手順③:Dockerfileを準備する

サービス用Webサーバの設計図となるDockerfileを準備します。

[Dockerfile]

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

上記の内容を簡単に記載しておくと以下の通りとなります。
・python3.7のimageをpull
・コンソールのstdout(標準出力)とstderr(標準エラー出力)のバッファを無効に
・Dockerfileと同じディレクトリに用意したrequirements.txtをcodeディレクトリに配置し、必要なライブラリのインストールを行う

環境構築手順④:requirements.txtを準備する

サービス用Webサーバに必要となるライブラリを以下の通り指定します。
ここにDjangoおよび関連するライブラリを定義しています。

[requirements.txt]

Django>=2.2.4
mysqlclient==1.4.6
django-crispy-forms
django-filter

環境構築手順⑤:Docker Composeを実行する

Docker for Windowsでは以下の通り、GUIでDocker Composeを実行(up)することができます。

http://localhost:8000/ にアクセスして、Djangoの初期画面が表示されていれば、環境構築は完了です。

この記事が気に入ったらサポートをしてみませんか?