はじめに

今回から複数回に渡り、DockerとPythonを使った開発環境の構築手順を解説していきます。本記事は、その第一回目として、Docker ComposeとDockerfileを使ってPython開発環境を構築する手順について説明します。

Docker コンテナの起動

Python 3系の最新バージョンである python:3 Docker イメージを利用します。イメージのタグを指定しない場合、常に最新のPython 3系のバージョンがプルされます。まずはイメージをプルしましょう。

docker pull python:3

pipとrequirements.txt

Pythonでは、パッケージ管理ツールとして pip が一般的に使われています。pip では、必要なパッケージの情報を記載したファイル(requirements.txt)を使い、まとめてインストールすることができます。pip freeze コマンドでは現在インストールされているパッケージ情報を出力できます。出力結果を標準出力にリダイレクトし、テキストファイルに保存します。一般的にこのテキストファイルは requirements.txt という名前です。

pip freeze > requirements.txt

requirements.txt ファイルを作成することで、必要なPythonパッケージをまとめて管理できます。開発環境を再現する際や、依存関係を明示的に示す必要がある場合に便利です。

Dockerfile の作成

次に、Dockerfile を作成します。

FROM python:3
WORKDIR /code
COPY requirements.txt ./
RUN pip install -r requirements.txt

この Dockerfile は、最新のPython 3系の公式イメージをベースとし、作業ディレクトリを /code に設定しています。さらに、requirements.txt ファイルをコピーし、その内容に基づいてPythonパッケージをインストールするよう指示しています。

Docker Compose ファイルの作成

docker-compose.yml ファイルを作成します。

services:
  myapp:
    build:
      dockerfile: ./Dockerfile
    volumes:
      - ./:/code

この docker-compose.yml ファイルでは、myapp というサービスを定義しています。build セクションで Dockerfile を指定し、volumes セクションでホストのカレントディレクトリ(./)をコンテナ内の /code ディレクトリにマウントするよう指示しています。

Dockerfiledocker-compose.ymlrequirements.txt が同じディレクトリにあると仮定します。

.
├── Dockerfile
├── docker-compose.yml
└── requirements.txt

Docker イメージのビルド

Docker Compose を使って Docker イメージをビルドします。

docker compose build

このコマンドにより、Dockerfile の内容に基づいてDockerイメージがビルドされます。

コンテナの起動

Docker Compose でコンテナを立ち上げます。

docker compose run --rm myapp python

このコマンドを実行すると、Dockerイメージから新しいコンテナが作成され、Pythonの対話シェルが起動します。requirements.txt に記載された依存パッケージがインストールされた状態で、Pythonスクリプトを実行したり、対話シェルを利用したりできます。

まとめ

本記事では、Docker ComposeとDockerfileを使ってPython開発環境を構築する手順を解説しました。Docker ComposeとDockerfileを組み合わせることで、開発環境をコード化し、簡単に再現できるようになります。これにより、複数人での開発やCI/CDなどの自動化にも役立ちます。

次回は、Gitのセットアップについて解説する予定です。適切なGitの運用は、チームでのコード共有や履歴管理に不可欠です。お楽しみに。