概要
テストコードを実行しようと思ったけれど初めて入るサーバだったのでWebサーバの名前が分からなかった。
Dockerコンテナにbashで入りたいけど名前が分からない時の対処法。
方法
実行中のコンテナを確認。
docker ps
コンテナ名(またはID)を指定するとコンテナにbashで入ることができる。
例:コンテナ名が「web_server」の時
docker exec -it web_server bash
例:Dockerに入った後、Ruby(rspecを使用)でのテストを実行
bundle exec rspec テストファイル名
補足:そもそもDockerに入ってテストコードを実行するのはなぜ?
個人の設定に依存せず、再現性高くテストを実行できるため。
具体的には、
- コンテナ内でテストコードを実行することで、ローカルマシンやCI/CDパイプライン上での環境の違いによる問題を回避
- 依存関係のバージョン違いやインストール漏れによるテスト失敗を防げる
- 特定のバージョンのソフトウェアや設定が含まれたコンテナイメージを使用することで、どこで実行しても同じ結果が得られるようになる
- 多くのCI/CDツールは、テストをコンテナ内で実行することを前提としており、ビルド、テスト、デプロイの各ステージが一貫した環境で実行されるため、パイプライン全体の信頼性が向上する
- ドッカーコンテナがホストシステム(自分が使っているPCやサーバー)から独立して動作するため、コンテナ内で行われる操作や設定がホストシステムに直接影響を与えないようにすることができる