Chapter 03

Docker環境のインストール

smithonisan
smithonisan
2021.08.15に更新

本章では、開発環境としてDockerを用いる意義の説明と、Dockerのインストールを行います。
Dockerでの開発に慣れている方は本章を読み飛ばし、次章のDockerイメージの作成に進みましょう。

docker-composeのインストール

本書では、docker-composeを通してpythonおよびFastAPIを利用することとします。

Dockerはコンテナサービスを提供するアプリケーションです。pythonを直接インストールするのではなく、なぜわざわざDocker内にインストールするのかというと、以下の2点の理由があります。

  1. 環境差分を排除するため
  2. 環境を閉じ込めるため

それぞれを詳しく見てみましょう。

1. 環境差分を排除するため

本書の読者の方の中には、Macを使っていらっしゃる方もいれば、WindowsやLinuxを利用されている方もいるかと思います。それぞれに応じてPythonのバージョンが異なったり、場合によってはPythonのパッケージライブラリがこれらの環境に依存することがあります。

Pythonは、同じOS内に複数バージョンをインストールし、それらを切り替えて使うことができます。そして、この切替の方法は環境を設定するライブラリに応じて複数存在します(例えばPyenv, Virtualenv (venv), Pipenvなど)。しかし、この切り替えの方法はデファクトスタンダードが確立されている状態とは言えず、本書を読まれている方すべてに最適な方法を準備するのが難しいのが現状です。

ここで、Dockerを利用することで、Pythonが実行されるOSと、それを含む今回作成するAPIより下のレイヤの環境を固定することができ、環境による差分をかなり小さくすることができます。これにより、本書を読み進めていくにあたって、インストール時のエラーや、特定のコマンドのエラーなどが少なくなることに繋がります。

2. 環境を閉じ込めるため

また、本書では 11章
データベースの接続とDBモデル(Models)
でMySQLのインストールを行います。MySQLなどのデータベースはより低レイヤのAPIを利用して構築されていることが多いため、Pythonの実行環境以上にOSやハードウェアの環境に依存するケースが多くなります。ここでもDockerによる環境差分の吸収が力を発揮します。またPythonの実行コンテナとMySQLのコンテナを分けることによって、これらのコンテナ間の依存関係を明確にすることが出来ます。

Dockerによって、Pythonやデータベースの環境をコンテナ内に閉じ込めることができますので、何か間違った際にコンテナを作り直したり、廃棄することが簡単にでき、結果としてホストマシンの環境を汚さずに済みます。

docker-compose の利用は本書の内容を余計なトラブルなく実行していただくことが大きな狙いです。しかしそれにとどまらず、同じ方法を使ってAPIをチームで共有することもできるため、実際のチーム開発の現場においても強力な助っ人となるでしょう。

インストール

それでは、早速 docker-compose をインストールしましょう。既にインストールされている方は、この後のPythonおよびFastAPIのインストールに進んでください。

docker-compose のインストールについては、こちらのDocker公式ドキュメントを参考に進めてください。

Macの方は Docker for Mac 、Windowsの方は Docker for Windows をインストールすることで、同時に docker-compose がインストールされます。Linuxの方は curl でダウンロードしたバイナリファイルからインストールが可能です。

確認

docker-compose がインストールされていることを確認してみましょう。

shell
$ docker-compose version

以下のようにバージョン情報が返却されればOKです(インストールする環境やタイミングによってバージョンは異なります。)

docker-compose version 1.29.0, build 07737305
docker-py version: 5.0.0
CPython version: 3.9.0
OpenSSL version: OpenSSL 1.1.1h  22 Sep 2020

次章では、 docker-compose を使ってPythonとFastAPIをインストールしていきます。