ひとメモ

主にプログラミングのメモ

Dockerのimageを再ビルドせずに新しいパッケージを使う(docker commit)

Dockerfileに書いていないパッケージを追加したい

Docker(docker-compose)、Python、FlaskでWebアプリを作ってます。

DockerfileにRUN pip3 install -r requirements.txt と記述し、アプリで使用するPythonのパッケージをインストールしているのですが、初心者なので必要なパッケージがわからず、開発が進むにつれてアレもコレも入れなくちゃ…となることがありました。

その際requirements.txtにパッケージ名を追記し、Dockerのイメージを再ビルドしていましたがめちゃくちゃ面倒です。

そういう時はcommitを使えばいいよと教わったので、手順をメモ。

手順

docker-compose upでコンテナを立ち上げ、
docker exec -it コンテナID bashでコンテナ内のbashを開きます。
(コンテナIDはdocker psで確認)

そこでpip3 install 必要なパッケージを実行し、必要なものをインストールします。

終わったらCtrl+Dでコンテナを抜けておきます。

そしてdocker commit コンテナ名 新しく作るイメージ名とすると、必要なパッケージがインストールされた新しいイメージが作成されます。
後はdocker-compose.ymlのimage名をその新しいものに置き換えるだけ。

以上です。イメージのビルドと違って一瞬で終わります。便利〜
最終的に改めてDockerfileを更新し、ビルドしなおすのが良いです。