LoginSignup
1
1

Railsアプリの開発で使ったDockerコマンド集

Last updated at Posted at 2024-03-31

概要

普段から開発環境はDockerを使っていて、
仕事でよく使うDockerコマンドをまとめました。

前提

  • Railsアプリケーション・データベース・バックグラウンドプロセス(例: Webpackerなど)がそれぞれ独立したDockerコンテナで稼動

【基本】コンテナの作成・起動・停止・削除

まずは、基本的に使うコマンドから。[コンテナID]は「docker ps」から確認できます

コマンド 役割
docker build [コンテナID] コンテナの作成
docker start [コンテナID] コンテナの起動
docker compose up コンテナの作成・起動
docker stop [コンテナID] コンテナの停止
docker rm [コンテナID] コンテナの削除

バックグラウンド上でコンテナの作成・起動

-dのオプションはデタッチド・モードと言います。
バックグラウンド上でコンテナを立ち上げるモードです。これをつけずに「docker compose up」をすると、ログがサウナで流れる汗のように出てきます。

$ docker compose up -d

これが何だかんだ1番使ってるコマンドかもしれません。

動いているコンテナの一覧を表示

compose up などで起動した現在稼働中のコンテナ一覧を表示。
コンテナID(CONTAINER ID )やコンテナ名(NAMES)を確認したい時によく使うコマンド

$ docker ps
CONTAINER ID   IMAGE              COMMAND                  CREATED        STATUS              PORTS                   NAMES
c3f279d17e0a   nginx              "/docker-entrypoint.…"   3 hours ago    Up 3 hours          0.0.0.0:80->80/tcp      webserver
4e5021d210f6   mysql:5.7          "docker-entrypoint.s…"   2 days ago     Up 24 hours         3306/tcp, 33060/tcp     mysqldb

存在するコンテナの一覧を表示

  • 動いているコンテナと停止しているコンテナの一覧を表示します

ここで「STATUS」の欄が「Exited」になっていたら存在はしているけど停止しているコンテナ。
下記の1番下のCONTAINER ID「5a0f2d3c9e5a」のコンテナとかがその例になります。

$ docker ps -a
CONTAINER ID   IMAGE              COMMAND                  CREATED        STATUS              PORTS                   NAMES
c3f279d17e0a   nginx              "/docker-entrypoint.…"   3 hours ago    Up 3 hours          0.0.0.0:80->80/tcp      webserver
4e5021d210f6   mysql:5.7          "docker-entrypoint.s…"   2 days ago     Up 24 hours         3306/tcp, 33060/tcp     mysqldb
5a0f2d3c9e5a   my-rails-app       "/bin/bash"              12 hours ago   Exited         0.0.0.0:3000->3000/tcp  my-rails-container

railsコンテナの中に入って、rails cでコンソールを叩きたい

## railsコンテナの中に入る
$ docker compose exec -it [railsコンテナID] bash

## railsコンソールを開く
$ bundle exec rails console

railsコンテナの中で、binding.pryでデバッグをしたい時

rails使っている人なら大体知ってると思うので、binding.pryの説明は省略します。

$ docker attach [railsコンテナ]

## この後にrailsのログが流れる
## binding.pryの書かれている箇所の画面に遷移したりすると、以下のように処理が止まって、デバッグできる

   3: def index
   4:   @tweets = Tweet.all
=> 5:   binding.pry
   6: end

  [1] pry(#<TweetsController>)>

railsコンテナのルーティングを確認したい時

## railsコンテナの中に入る
$ docker compose exec -it [railsコンテナID] bash

## railsコンソールを開く
$ bundle exec rails routes

seedファイルからテストデータを作りたい時

## railsコンテナの中に入る
$ docker compose exec -it [railsコンテナID] bash

## railsコンソールを開く
$ bundle exec rails db:seed

railsコンテナでbundle installしたい時

Gemfileを更新したら実施する

docker compose exec rails bundle install

データベースのテーブル構造を確認したい時

## DBコンテナの中にはいる
$ docker compose exec -it [DBコンテナID] bash

$ mysql

$ show databases;
##ここでmysqlで管理しているデータベースがずらっと出てくる

$ use [確認したいデータベース名];

$ show [確認したいテーブル名];

余談

1年前くらいは「railsコンテナの中に入る」という意味がわからないくらいDockerを使えてませんでしたが、今は割とサクサク使えるようになってきました。

何が言いたいかというと、「Docker意味分からん」っていう人も実務でガシガシ使わざるを得ない環境に1年くらいいると良い感じに使えるようになってると思います。

終わりに

「こんなDockerコマンドもRailsアプリの開発でよく使うよ!」
「そのコマンド、ちょっと違うかもよ?」などの意見がありましたら、
編集リクエスト・コメントどしどしお待ちしてます :bow:

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1