0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

DockerだけでRailsプロジェクトを立ち上げる

Last updated at Posted at 2018-09-18

目的

ローカルマシンにRailsをインストールせずに、DockerだけでRailsプロジェクトを簡単に立ち上げること

Step1: プロジェクト作成用のdocker-compose.ymlの作成

任意の作業ディレクトリでdocker-compose.ymlを作成し以下のように編集

version: '3'
services:
  rails:
    image: ruby:2.5.1 # a
    command: tail -f /dev/null # b
    container_name: rails # c
    volumes:
      - .:/app # d

a. rails newを実行するための環境を備えたimageを指定。今回は公式のruby imageから手動でrailsのインストールをしてRailsプロジェクトを作成していく。あくまでrails newを実行するためのimage。プロジェクト作成後ruby:2.5.1-alpineなどからDockerfileを自作して必要なモジュールだけインストールしてスリムアップした状態で開発していくことも可能。ただ、プロジェクト作成後にimageを変えてしまうとOSの差異で挙動が変わってしまう恐れがあるので、imageを自作するのであれば自作したimageの上でrails newするのが安全

b. コンテナはコマンドの実行が終了してしまうとコンテナ自体も終了しまう。そうなると、コンテナ上でコマンドの実行等ができなくなってしまうため、tail -f /dev/nullでコマンドの実行状態を保つ

c. コンテナの名前。コンテナに入るときに使う

d. ローカルマシンとDockerコンテナを同期させる。:で区切られていて左側が同期したいローカルマシン内のpathで右側が同期したいコンテナ内のpath。今回はコンテナ内の/app下で作業する

Step2: コンテナ内でrailsのインストールし、rails new

docker-compose.ymlがあるディレクトリ内で以下のコマンドを実行し、コンテナ内に入る

$ docker exec -it rails /bin/bash

作業ディレクトリに移動し、gem install rails

$ cd /app
$ gem install rails

rails newする(オプションはお好みで)

$ rails new -B -d mysql --skip-test .
$ bundle install --path vendor/bundle --jobs=4

実行すると同期されているのでローカルマシンに作成されたファイル群が追加される。

まとめ

gitはローカルマシンで管理しないといけないが、その他の開発はコンテナ内で実行することが可能になる。ローカルマシンにはgitとDockerだけ入れておけば作業が始められる

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?