Dockerを触っていると、最初に環境を作ったときは「これで十分!」と思ったのに、数日後には「やっぱりあのモジュール必要だったわ…」なんてこと、よくありますよね。
まるで冷蔵庫の中身を確認せずにカレーを作り始めて、「にんじんがない!」と気づくあの瞬間に似ています。
さて、そんなときに必要なのが requirements.txt の更新です。
Python系のプロジェクトではおなじみのこのファイルに、新たに必要になったモジュールを追記していきます。
実際の手順
- requirements.txt に欲しいモジュールを追記する。 (例:pandas==2.2.0 とかを追加)
- その後、Dockerコンテナを作り直す必要があります。
つまり、こういう流れになります
docker-compose down docker-compose build docker-compose up -d
なぜこの流れが必要?
- down : いったんコンテナを停止&削除。中途半端な状態をクリアにします。
- build : 新しい requirements.txt を取り込んでイメージを再構築。
- up -d : バックグラウンドで新しいコンテナを起動。
つまり、「一度冷蔵庫を空にして、新しい材料で作り直す」イメージですね。
余談|もっとスマートにできないの?
もちろん方法はいくつかあります。
- コンテナ内に直接 pip install してしまう手もありますが、それだとDockerの再現性が崩れるので非推奨。
- 本番環境やチーム開発なら、必ず requirements.txt を更新して ビルドからやり直すのが安全です。
もし「停止せずに差分だけ反映したい」という場面では、以下を使うと、down → build → up をある程度まとめてやってくれます。
ただし、キャッシュや古い依存関係が邪魔して「アレ?更新されてないぞ…」となる場合があるので、確実さを優先するなら上記の三手順が一番安牌です。
## 停止せずに差分だけ反映したい docker-compose up -d --build
まとめ
- 追加モジュールが必要になったら requirements.txt に追記。
- その後は docker-compose down → build → up -d の三連コンボで再構築。
- 「あとから欲しくなるモジュール」は珍しくないので、慌てず手順で対応。
「なんで入ってないの!?」と慌てるときも、落ち着いて再ビルドすればOKです。