【初心者向け】DockerでPython開発を始めるためのチュートリアル:イメージとモジュールのインストール
Docker イメージに Python モジュールをインストールする方法
Dockerfile を使用する
Dockerfile は、Docker イメージのビルド方法を記述したファイルです。 Dockerfile に RUN
命令を追加することで、イメージビルド時に Python モジュールをインストールすることができます。
FROM python:3.10
RUN pip install -r requirements.txt
この例では、requirements.txt
ファイルに記載されているすべてのモジュールがインストールされます。
pip install コマンドを使用する
Docker コンテナが起動したら、pip install
コマンドを使用して Python モジュールをインストールすることができます。
docker exec -it <container_id> pip install -r requirements.txt
どちらの方法が適しているか
どちらの方法が適しているかは、状況によって異なります。
- Dockerfile を使用する
- ビルド時にすべての必要なモジュールをインストールしたい場合
- インストールするモジュールが事前にわかっている場合
pip install
コマンドを使用する
- Docker イメージにインストールする Python モジュールは、できるだけ最小限に抑えるようにしましょう。
- モジュールのバージョンを固定したい場合は、
requirements.txt
ファイルにバージョン情報を含めるようにしましょう。
FROM python:3.10
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "main.py"]
requirements.txt
requests
pandas
main.py
import requests
import pandas as pd
# ... コード ...
このコードは以下の通り動作します。
python:3.10
イメージに基づいて新しい Docker イメージを作成します。- 作業ディレクトリを
/app
に設定します。 requirements.txt
ファイルをイメージにコピーします。pip install
コマンドを使用して、requirements.txt
ファイルに記載されているモジュールをインストールします。- アプリケーションコードをイメージにコピーします。
main.py
スクリプトを実行するように CMD 命令を設定します。
このコードをビルドするには、次のコマンドを実行します。
docker build -t python-app .
このコマンドは、python-app
という名前の新しい Docker イメージを作成します。
イメージをビルドしたら、次のコマンドを実行してコンテナを起動することができます。
docker run -it python-app
このコマンドは、python-app
イメージに基づいたコンテナを起動し、コンテナ内にインタラクティブシェルを開きます。
使用するベースイメージに、必要なモジュールがすでにインストールされている場合があります。 公式の Docker イメージや、コミュニティによって作成されたイメージなど、さまざまなベースイメージが用意されています。
Multi-stage ビルドを使用する
Multi-stage ビルドを使用すると、複数のビルドステージを定義し、各ステージで必要なモジュールのみをインストールすることができます。 これにより、イメージのサイズを小さくし、ビルド時間を短縮することができます。
FROM 命令のオプションを使用する
FROM
命令には、いくつかのオプションがあり、イメージにモジュールをインストールするために使用することができます。 例えば、--build-arg
オプションを使用して、ビルド時に渡される引数を指定することができます。 この引数を使用して、インストールするモジュールのバージョンを指定することができます。
レイヤードイメージを使用する
レイヤードイメージを使用すると、複数のイメージを重ねて新しいイメージを作成することができます。 これにより、必要なモジュールのみを含む新しいイメージを作成することができます。
どの方法を選択するべきか
どの方法を選択するべきかは、状況によって異なります。
- シンプルさを重視する場合は、Dockerfile を使用する
- モジュールのバージョンを固定したい場合は、
requirements.txt
ファイルを使用する - イメージのサイズを小さくしたい場合は、Multi-stage ビルドを使用する
- ビルド引数を指定したい場合は、
FROM
命令のオプションを使用する - 柔軟性を重視する場合は、レイヤードイメージを使用する
linux docker dockerfile