Docker ComposeとDockerfileでPython開発環境を構築する
Docker ComposeとDockerfileを使ったPython開発環境の構築手順
はじめに
今回から複数回に渡り、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
ディレクトリにマウントするよう指示しています。
Dockerfile
、docker-compose.yml
、requirements.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の運用は、チームでのコード共有や履歴管理に不可欠です。お楽しみに。