はじめに
みなさん、こんにちは torihaziです。
今回は最近dockerを学び始めたので、タイトルのことをやってみようかと思います。
dockerのメリットはホストからの独立性ということはチラッと覚えているので
自分のmacから独立したrubyの開発環境を作っていきましょう。
それでは ltg.
間違いあれば指摘ください!!
ruby経験は0ヶ月目の1日目です!!
用意するもの
- Dockerfile
- docker-compose.yml
- Gemfile
- Gemfile.lock
これらを使うことで rubyが入っている コンテナを立ち上げる事ができます。
実際のコード開発は ホストで行い、ホスト側とコンテナ側のファイルシステムを連携することで
test.rbを実行したい時だけ、コンテナ側で、、、、なんて事ができるようになる。。
はずです!!
手順
- ターミナルで任意の場所に作業ディレクトリを作る
- "用意するもの"を作成
- Dockerイメージをビルドする
- Dockerコンテナを起動させる
- 完成
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