Ruby on Rails の環境を Docker で構築して RubyMine でコーディング (Mac Book Pro)


Ruby on Rails の環境を Docker で構築して RubyMine でコーディング (Mac Book Pro)

前回の記事のDocker設定はbundle専用のコンテナを用意してGemのインストールの効率化をしていたのですが、この設定だとRubyMineの『Gemをリモートでインストールする機能』が上手く働かないため、Dockerの設定を変更してコーディングに特化した環境にします。

bundle専用コンテナと『Gemをリモートでインストールする機能』を両立する方法が見つかった場合は更新しようと考えています。

前回の記事

Dockerの設定、実行

  • 前回のDockerfileの以下をコメントにします。
    ENV BUNDLE_JOBS=4 \
    BUNDLE_PATH=/bundle
Dockerfile
FROM ruby:2.3.3
RUN apt-get update -qq && \
    apt-get install -y build-essential libpq-dev nodejs
RUN mkdir /myapp
WORKDIR /myapp
ADD Gemfile .
ADD Gemfile.lock .
#ENV BUNDLE_JOBS=4 \
#    BUNDLE_PATH=/bundle
RUN bundle install
ADD . .

  • 前回のdocker-compose.ymlの以下をコメントにします。
    volumes_from:
    - bundle
    bundle:
    image: busybox
    volumes:
    - /bundle
docker-compose.yml
version: '2'
services:
  web:
    build: .
    #command: bundle exec rails s -p 3000 -b 0.0.0.0
    command: bundle exec rdebug-ide --port 1234 --dispatcher-port 26162 --host 0.0.0.0 -- bin/rails s -b 0.0.0.0 -p 3000
    container_name: web
    depends_on:
      - db
    ports:
      - "127.0.0.1:3000:3000"
      - "127.0.0.1:1234:1234"
      - "127.0.0.1:26162:26162"
    stdin_open: true
    tty: true
    volumes:
      - .:/myapp
#    volumes_from:
#      - bundle
  db:
    image: postgres
#  bundle:
#    image: busybox
#    volumes:
#      - /bundle

  • Dockerfileを 再ビルドします。
$ docker-compose stop

$ docker-compose build
  • データベースを再作成します。
$ docker-compose run web rake db:create
$ docker-compose run web rake db:migrate
  • dockerのコンテナを起動します。
$ docker-compose up

RubyMineでDockerのGemをリモートインストールして、コーディング開始

  • Dockerのイメージの中から [プロジェクトのフォルダ名]_web を選択します。

  • Gemがインストールされているのを確認して選択します。
    RubyMineのメイン画面にソースを表示して『Cannot find 'クラス名' more...』で黄色表示されていた箇所がなくなりオールグリーンになれば成功です。

左下のDockerコンテナの起動状況を確認できるツールが便利で良いですね。