Torihaji's Growth Diary

Little by little, no hurry.

初心者がdockerコンテナを使って、爆速でrubyの環境構築した話

はじめに

みなさん、こんにちは torihaziです。

今回は最近dockerを学び始めたので、タイトルのことをやってみようかと思います。

dockerのメリットはホストからの独立性ということはチラッと覚えているので

自分のmacから独立したrubyの開発環境を作っていきましょう。

それでは ltg.

間違いあれば指摘ください!!

ruby経験は0ヶ月目の1日目です!!

用意するもの

  • Dockerfile
  • docker-compose.yml
  • Gemfile
  • Gemfile.lock

これらを使うことで rubyが入っている コンテナを立ち上げる事ができます。

実際のコード開発は ホストで行い、ホスト側とコンテナ側のファイルシステムを連携することで

test.rbを実行したい時だけ、コンテナ側で、、、、なんて事ができるようになる。。

はずです!!

手順

  1. ターミナルで任意の場所に作業ディレクトリを作る
  2. "用意するもの"を作成
  3. Dockerイメージをビルドする
  4. Dockerコンテナを起動させる
  5. 完成

1. ターミナルで任意の場所に作業ディレクトリを作る

# cd ~/Documents
# mkdir ruby
# cd ruby

2.用意するものを作成

Dockerfile

FROM ruby:3.2.2
RUN apt-get update  && apt-get install -y \
    build-essential \
    nodejs \
    libpq-dev

WORKDIR /com
COPY Gemfile Gemfile.lock /com/
RUN bundle install

docker-compose.yml

version: '3'

services:
  web:
    build: .
    ports:
      - '3000:3000'
    volumes:
      - '.:/com'
    tty: true
    stdin_open: true

Gemfile

source "https://rubygems.org"
ruby "3.2.2"

Gemfile.lockは空でOKです。

3.Dockerイメージをビルドする

# docker compose build

4. Docker コンテナを起動させる

# docker compose run web bash

bashと記載しなければirbが開きます。

5.完成

このようにして行えば、ホストにrubyが入っていなくてもコンテナ上でrubyを実行する事ができます。

終わりに

いかがだったでしょうか。

ruby、自身の端末のコンテナ上で実行できましたか?

もしかしたらコンテナを使い方が間違っているかもしれませんが、

その時はこそっと教えて下さい・

あとで治しておきます

とりあえず今チェリー本の次のコードが動きました。

sample_test.rb

require 'minitest/autorun'

class SampleTest < Minitest::Test
    def test_sampple
        assert_equal 'RUBY', 'ruby'.upcase
    end
end
root@2f46ef952792:/com# ruby sample_test.rb
Run options: --seed 39482

# Running:

.

Finished in 0.000753s, 1328.6106 runs/s, 1328.6106 assertions/s.

1 runs, 1 assertions, 0 failures, 0 errors, 0 skips