【超爆速】DockerでRailsの環境を作る【５分クッキング】

## ⭐️爆速でRuby on Railsの環境を作っちゃおう

今人気急上昇中の `Docker` 

そんな**流行りに乗りたい人の為**に５分で出来る環境構築〜！

- 今まで触ったことが無い人
- これから使って見たい人
- とりあえずすぐにRails環境が欲しい人

そんな人の為の記事になります。

基本コピペでいけます！！！！！！

## ⭐️目安時間

5分

## ⭐️前提条件

・**Macで行なっております**

・**Docker for Mac**だけインストールしておいてください。

[Docker for Mac](https://docs.docker.com/docker-for-mac/install/#what-to-know-before-you-install)

## ⭐️レッツクッキング！

### (1) 作業場の確保とイメージの取得

```txt:プロジェクトの作成
$ mkdir myapp_project
$ cd myapp_project
```

```txt:Docker　imageの取得
$ docker pull ruby
$ docker pull mysql
```

### (2) ファイル作成

#### Dockerファイルの作成

`$ vi Dockerfile`

```txt:Dockerfile
FROM ruby
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN mkdir -p /myapp
WORKDIR /myapp
RUN gem install bundler
ADD Gemfile Gemfile
ADD Gemfile.lock Gemfile.lock
RUN bundle install
ADD . /myapp
```

#### Gemfileの作成とlock

`$ vi Gemfile`

```txt:Gemfile
source 'https://rubygems.org'
gem 'rails'
```

`$ touch Gemfile.lock`

### (3) docker-compose.ymlの作成

`$ vi docker-compose.yml`

```txt:docker-compose.yml
version: '3'
services:
  db:
    image: mysql
    environment:
      - MYSQL_ROOT_PASSWORD=password
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/myapp
    ports:
      - "3000:3000"
    depends_on:
      - db
```

### (4) Railsアプリの生成

`$ docker-compose run web rails new . --force --database=mysql --skip-bundle`

Installing nokogiri 1.8.1 with native extensionsが長い…。

### (5) ちょっと設定等を変えたり便利なものを詰め込む

#### Gemfile編

```txt:コメントを外してください
gem 'therubyracer', platforms: :ruby
```

```txt:developmentの中に追加してください
group :development do
.....
.....
  gem 'pry-byebug'
end
```

#### database.yml編

`$ vi config/database.yml`

```yml:database.yml

// 大体12行目から

default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  username: root
  password: password
  host: db

```

### (6) さービルドだ！

`$ docker-compose build`

### (7) 最後に立ち上げてdb作成

```
$ docker-compose up -d
$ docker-compose run web rake db:create
```

Done!!
アクセス！！

http://localhost:3000

## ⭐️Docker コマンドメモ

### docker-compose run

```txt:バージョン確認
# Rubyのバージョンを確認する
$ docker-compose run --rm web ruby -v

# MySQLのバージョンを確認する
$ docker-compose run --rm db mysql --version

# Railsのバージョンを確認する
$ docker-compose run --rm workspace php artisan -v
```

```txt:コマンドを実行する
# rails generateを例にすると
$ docker-compose run --rm web rails generate controller users index

# rails routesをしたい
$ docker-compose run --rm web rails routes
```

### docker cp

```txt:コンテナ間のファイル移動
# コンテナ内のファイルをコピーする
$ docker cp {コンテナID}:{ファイルまでのパス} ローカルの保存したい場所

# ローカルのファイルをコンテナにコピーする
$ docker cp ローカルファイルの場所　{コンテナID}:{コンテナの保存したい場所}
```

### docker pull

```txt:イメージを引っ張る
$ docker pull ubuntu
```

```txt:バージョンを指定する
$ docker pull ubuntu:12.04
```

### docker run

```txt:ホスト名を付けて起動する
$ docker run -h Hoge -i -t ubuntu /bin/bash
```

```txt:コンテナ名を付けて起動する
$ docker run --name Hoge -i -t ubuntu /bin/bash
```

### docker start

```txt:コンテナを起動してログインする
$ docker start -a [containerID]
```

### docker rm

```txt:コンテナを削除する
$ docker rm [containerID]
複数指定可能
```

```txt:停止中のコンテナを一気に削除する
$ docker container prune
```

### docker images

```txt:イメージ一覧を表示する
$ docker images
```

```txt:イメージを削除する
$ docker rmi [imageID]
```

## ⭐️その他

これとか参考にしてください
[Dockerのtips的な自分のメモ](https://qiita.com/k-waragai/items/046473b56c8ecca18634)

Laravelもあります
[DockerでLaravel(Apache+php-fpm+mysql)を構築する手順書](https://qiita.com/k-waragai/items/cc0ad847cf8391c796db)