アプリケーションの更新
パート1 では、todoアプリケーションをコンテナ化しました。このパートでは、アプリケーションとイメージを更新します。また、コンテナの停止および削除方法についても学びます。
ソースコードを更新する
次の手順では、todoリストにアイテムがない場合の空のテキストを “You have no todo items yet! Add one above!” に変更します。
-
src/static/js/app.js
ファイルの56行目を新しい空のテキストに変更します。- <p className="text-center">No items yet! Add one above!</p> + <p className="text-center">You have no todo items yet! Add one above!</p>
-
docker build
コマンドを使用して、更新されたバージョンのイメージをビルドします。$ docker build -t getting-started .
-
更新されたコードを使用して、新しいコンテナを起動します。
$ docker run -dp 127.0.0.1:3000:3000 getting-started
おそらく次のようなエラーが表示されたでしょう:
docker: Error response from daemon: driver failed programming external connectivity on endpoint laughing_burnell
(bb242b2ca4d67eba76e79474fb36bb5125708ebdabd7f45c8eaf16caaabde9dd): Bind for 127.0.0.1:3000 failed: port is already allocated.
このエラーは、古いコンテナがまだ実行されている状態では新しいコンテナを起動できないために発生しました。原因は、古いコンテナがすでにホストのポート3000を使用しており、マシン上の(コンテナを含む)1つのプロセスのみが特定のポートをリッスンできるためです。この問題を解決するには、古いコンテナを削除する必要があります。
古いコンテナを削除する
コンテナを削除するには、まず停止させる必要があります。コンテナが停止したら削除できます。CLIまたはDocker Desktopのグラフィカルインターフェースを使用して古いコンテナを削除できます。自分が最も慣れている方法を選んでください。
CLIを使用してコンテナを削除する
-
docker ps
コマンドを使用してコンテナのIDを取得します。$ docker ps
-
docker stop
コマンドを使用してコンテナを停止します。docker ps
で取得したIDを<the-container-id>
の部分に置き換えます。$ docker stop <the-container-id>
-
コンテナが停止したら、
docker rm
コマンドを使用して削除できます。$ docker rm <the-container-id>
Note
docker rm
コマンドにforce
フラグを追加すると、コンテナを1つのコマンドで停止して削除できます。例えば、docker rm -f <the-container-id>
です。
更新されたアプリのコンテナを起動する
-
docker run
コマンドを使用して、更新されたアプリを起動します。$ docker run -dp 127.0.0.1:3000:3000 getting-started
-
ブラウザで http://localhost:3000 をリフレッシュすると、更新されたヘルプテキストが表示されます。
まとめ
このセクションでは、コンテナの更新と再ビルドの方法、およびコンテナの停止と削除の方法を学びました。
関連情報:
次のステップ
次は、イメージを他の人と共有する方法を学びます。