まだ自分のPCで消耗しているの？Dockerを使ってコマンド一発！Rubyの環境を構築しよう！

# 想定読者

- ローカル環境構築に消耗している人
- Dockerで全部管理したい人
- Docker説明はいいから作り方を早く教えて欲しい人
- 最新のRubyを手っ取り早く使いたい人



# 前提

- 既にDockerをインストールしている人。
- Dockerを初めて触る人。
- コマンド操作はまだ慣れてなくてOK(コピペでいけます)



# 目標

- Dockerを起動して1発コマンドを入力すれば、Rubyの環境を構築できちゃう。

  - 実はDockerには、公式ドキュメントとして[**Docker hub**]([https://hub.docker.com](https://hub.docker.com/))といった、各言語のサポート資料があります。その中にも、もちろんRubyもあります。

  - 今回はこちらの資料を参考に環境を構築していきます。



# 準備

- Docker
- エディタ(VScode)
- 1回のコマンドを打つ勇気

# 環境構築

## Rubyフォルダ作成

今回専用のディレクトリを作成します。

DesktopにRubyのフォルダを作成して、エディタを開いてファイルを作成する準備を行いましょう。

![Ruby.mov.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387875/8fd75518-869d-6e09-abc8-a88dbe0ac02a.gif)



準備は以上です！

## ターミナルを立ち上げてコマンドを入力する

```control``` + ```  `  ```もしくは

上のタブから```ターミナル```から```新しくターミナル```を選択するとターミナルが出ます。

次に下記のコマンドを入力しましょう！

```sh
$ docker run --name ruby -i -t -v `pwd`:/var/ruby -w /var/ruby ruby /bin/bash
Unable to find image 'ruby:latest' locally
latest: Pulling from library/ruby
Digest: sha256:90e8ee6a35bdecdb67cb1d5f0333c79604eab86b7a5a6ad2417378a216f7a316
Status: Downloaded newer image for ruby:latest
root@776f431724cd:/var/ruby#
```

これで環境構築が完了しました！

(上記の表記が一部違う可能性もあるかと思いますが、```root@776f431724cd:/var/ruby#```のような形で出れば成功です。数字はランダムなので気にしないでください。)

そして```$```表記から```root@776f431724cd:/var/ruby#```に変わっているのを確認できるでしょうか？

ここから実際にRubyのコマンドを打つことができます。

試しにRubyバージョンを確認したり、irbを起動して試してみましょう！

```sh
root@5081aa657940:/var/ruby# ruby -v
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux]
root@5081aa657940:/var/ruby# irb     
irb(main):001:0> puts "Hello World"
Hello World
=> nil
irb(main):002:0> quit
root@5081aa657940:/var/ruby# 
```



# 実際に```rb```ファイルを作成して、HelloWorldを表示させる。
実際にRubyのファイルを作っても動きます。
下記手順です。

## ```hello.rb```ファイルの作成

今回```ruby```のフォルダの中に```hello.rb```を作成します。

下記のように作成してください！

```ruby
puts "Hello World"
```

作成し終わったら保存しましょう！

## ターミナルにて動作確認

実際にターミナルで確認していきます。

```shell
root@d4db42df138c:/var/ruby# ls
hello.rb
root@d4db42df138c:/var/ruby# ruby hello.rb
Hello World
```

無事にファイルが表示されました！

このように、rubyのフォルダにファイルを作成して動かしてみてください！



# 後片付け

ガチャガチャ動かして、もう飽きた！終わり！やめた！という方は下記のコマンドを入力すると通常のシェルに戻ります。



```sh
root@d4db42df138c:/var/ruby# exit
exit
```



そして最後に下記のコマンドを入力すれば後片付け終了です。

```sh
$ docker rm ruby                                                             
ruby
# エラーが出て消えなかったら下記のコマンドを入力
$ docker rm -f ruby
```

もう一度行いたいときは先ほどの手順を再度踏まえてもらえれば、問題なく動くはずです！

# ね？簡単でしょ？

これでRubyの環境構築は終わりです。

いかがでしょうか。



# (おまけ)コマンド一発の解説

今回フォルダを作成→1発コマンド入力→Rubyの環境構築完了
の順番でした。

おそらくチンプンカンプンな人もいるので、
下記のコマンドの解説について一個ずつ解説していきます。

コンテナやディレクトリの単語の意味がわからない方はググってください。。。。


```sh
$ docker run --name ruby -i -t -v `pwd`:/var/ruby -w /var/ruby ruby /bin/bash
```


- ```docker run```
  - これはdockerのコンテナを起動します。

- ```—name ruby```
  - コンテナに名前をつけます。今回はrubyという名前でコンテナを作成しました。

- ```-i -t```
  - この辺りは```docker run```を起動するための必要なコマンドとして覚えてください。

- ```-v `pwd`:/var/ruby```
  - ディレクトリを共有します。
  - 今回だとローカルにある```Desktop```に```ruby```のフォルダに```hello.rb```を作成しましたが、コンテナの中にある、```/var/ruby```の配下にも同じ```hello.rb```を共有してくれます。便利でしょ。

- ```-w /var/ruby ```
  - これはコンテナを起動した際に、どこで作業するかディレクトリを決めることができます。
  - ```root@d4db42df138c:/var/ruby#```この表記は起動した際に```/var/ruby```のディレクトリに勝手に移動してくれます。コンテナの中に入る時、一々```cd```で移動する必要が無くなります。

- ``` ruby ```
  - rubyをインストールしてくれます。
  - バージョンは何も書いていないと最新の安定版をインストールしてくれます。
  - もし、バージョンが古いものを使いたい時は```ruby:2.5.5```のように書いてください。

- ``` /bin/bash ```
  - コンテナの起動時にbashも起動します。
  - 要はローカルだと```$```ですが、dockerのコンテナに入ると```root#```の形になります。


##(おまけのおまけ)最後の削除するコマンドは何？


```sh
$ docker rm ruby
```

これは```ruby```というコンテナを削除しますよという意味です。

理由は、実際にコンテナの外に出たとしても、コンテナは動いています。
もう一度入ることはできないので、一度消したほうがいいでしょう。

(もしもう一度入ることができるのであれば、コメントくれると嬉しいです。)

#以上です。
何か間違ったことを書いていれば、コメントください！訂正します！