このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Rubyコンテナ

ここでは、Docker Composeコマンドを使ったRubyコンテナの構築例を紹介します。

Rubyとは

まず、はじめにRubyについて簡単に解説しておきます。


 Rubyは、オブジェクト指向プログラミング言語の1つであり、シンプルさと柔軟性を重視した設計が特徴です。まず1995年に日本の松本行弘(通称Matz)によって開発され、その後世界中で広く使われるようになりました。

 Rubyの特徴の1つは、読みやすく自然な文法です。これにより、初心者から上級者まで、幅広いプログラマーがRubyを学びやすく、生産性が高いと評価しています。また、Rubyは動的型付け言語であり、プログラムの記述が柔軟でありながらも、型の厳格な制約による安全性も確保されています。

 Rubyは、Webアプリケーションの開発に広く使用されており、特にRuby on Railsというフレームワークが有名です。Ruby on Railsは、迅速な開発と保守性の高さを提供し、多くの人々がウェブアプリケーションを構築するための選択肢として利用しています。

 Rubyはまた、スクリプト言語としても非常に人気があり、システム管理や自動化、データ処理などのさまざまな用途に利用されています。

URL:https://www.ruby-lang.org/ja/

Rubyコンテナの作成

「compose.yaml」を作成して、Rubyコンテナを作成します。

不要なDockerオブジェクトの削除

まず、不要なDockerオブジェクトをすべて削除しておきます。

以下のコマンドを実行します。

・「docker system prune -a」コマンドを実行します。

Are you sure you want to continue? [y/N] の質問には「y」と入力します。

PS C:\Users\joeac> docker system prune -a
WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all images without at least one container associated to them
  - all build cache

Are you sure you want to continue? [y/N] y
Deleted Containers:
(略)

・「docker system prune -a」コマンドで削除されなかったDockerオブジェクトは、個別に削除しておきます。

環境によって削除されずに残っているDockerオブジェクトは異なります。

compose.yaml の作成

・ディレクトリの作成と移動

Docker Composeでコンテナを作成するには、「compose.yaml」ファイルが必要になります。

 デフォルトでは、カレントディレクトリにある「compose.yaml」ファイルが読み込まれるため、作業ディレクトリに移動しておきます。

・「cd desktop/docker」コマンドを実行します。

PS C:\Users\joeac> cd desktop/docker
PS C:\Users\joeac\Desktop\docker>

 「compose.yaml」ファイルを保存する「ruby」ディレクトリを作成して、作成したディレクトリに移動します。次のコマンドを実行します。

  • 「mkdir ruby」コマンド
  • 「cd ruby」コマンド
PS C:\Users\joeac\Desktop\docker> mkdir ruby

    Directory: C:\Users\joeac\Desktop\docker

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----          2024/04/20    22:29                ruby

PS C:\Users\joeac\Desktop\docker> cd ruby
PS C:\Users\joeac\Desktop\docker\ruby>
・VSCodeの起動

VSCodeで「compose.yaml」ファイルを作成します。

・「code compose.yaml」コマンドを実行します。

PS C:\Users\joeac\Desktop\docker\ruby> code compose.yaml

VSCodeが起動します。

・「compose.yaml」ファイルの編集

・「compose.yaml」ファイルを以下のように編集して保存します。

services:
  ruby:
    image: ruby:3.0.6
    container_name: ruby_container    
    tty: true
    volumes:
      - ./src:/src
・定義内容の解説

「compose.yaml」ファイルの定義を解説します。

サービス名内容
ruby– Rubyのコンテナを定義します。
– イメージは ruby:3.0.6 を使用します。
– コンテナの名前は ruby_container に設定されます。
– tty オプションは、コンテナが標準入出力を割り当てられ、対話型のシェルを使用できるようにします。
– 「./src ディレクトリをコンテナ内の /src ディレクトリにマウントします。
「compose.yaml」ファイルの定義

 この docker compose.yml ファイルは、Ruby 3.0.6 の公式イメージを使って、 「./src」 ディレクトリを Ruby コンテナ内の /src にマウントする ruby サービスを定義しています。これにより、ローカル環境のソースコードをコンテナ内で編集および実行することが可能になります。

Rubyプログラム

簡単なrubyプログラムを作成します。

・プログラムを保存するディレクトリ

プログラムを保存するディレクトリを作成します。

・「mkdir src」コマンドを実行します。

PS C:\Users\joeac\Desktop\docker\ruby> mkdir src

    Directory: C:\Users\joeac\Desktop\docker\ruby

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----          2024/04/20    23:03                src

VSCodeで「hello_world.rb」ファイルを作成します。

・「code ./src/hello_world.rb」コマンドを実行します。

PS C:\Users\joeac\Desktop\docker\ruby> code ./src/hello_world.rb

VSCodeが起動します。

・「hello_world.rb」ファイルを以下のように編集して保存します。

# hello_world.rb

# "Hello world!"というメッセージを表示する
puts "Hello world!"

コンテナの作成と実行

・「docker compose up -d」コマンドを実行します。

このコマンドは、「compose.yaml」ファイルを配置した場所で実行する必要があります。

PS C:\Users\joeac\Desktop\docker\ruby> docker compose up -d
[+] Running 8/8
 ✔ ruby Pulled                                                                  14.7s
   ✔ ac323bdaa10f Pull complete                                                  2.8s
   ✔ 84811b2a563b Pull complete                                                  1.5s
   ✔ b3ff24b88ad3 Pull complete                                                  2.8s
   ✔ c6f58f24df78 Pull complete                                                  6.1s
   ✔ 3089396dabf5 Pull complete                                                  3.5s
   ✔ 1310941d32d8 Pull complete                                                  4.6s
   ✔ d3ab0dd6a02d Pull complete                                                  4.2s
[+] Running 2/2
 ✔ Network ruby_default      Created                                             0.0s
 ✔ Container ruby_container  Started                                             0.7s

Rubyプログラムの実行

Rubyコンテナが作成できたので、Rubyプログラムを実行します。

・「docker compose exec ruby ruby /src/hello_world.rb」コマンドを実行します。

 このコマンドは、Docker Composeを使用して名前が ruby であるサービス(コンテナ)内で ruby /src/hello_world.rb を実行するためのものです。つまり、Rubyコンテナ内で hello_world.rb プログラムがRubyのインタプリタで実行されます。

項目説明
docker compose execDocker Composeを使用して、コンテナ内でコマンドを実行するためのサブコマンドです。
ruby実行したいコンテナの名前またはIDを指定します。
ruby /src/hello_world.rbRubyコンテナ内で実行されるプログラムを指定します。ここでは、/src ディレクトリにある hello_world.rb ファイルが Ruby インタプリタで実行されます。
「docker compose exec ruby ruby /src/hello_world.rb」コマンド
PS C:\Users\joeac\Desktop\docker\ruby> docker compose exec ruby ruby /src/hello_world.rb
Hello world!

Rubyプログラムが実行されて、「Hello World!」と表示されます。