LoginSignup
15
12

More than 5 years have passed since last update.

Docker+Rails環境で開発をする

Last updated at Posted at 2018-11-06

環境

  • macOS High Sierra 10.13.6
  • Docker Community Edition Version 18.06.0-ce-mac70
  • Ruby 2.4.1
  • Ruby On Rails 5.1.4

みなさんこんにちは。あいづちくんです。

最近サーバサイドの開発をしていますが、しばらくiOSエンジニアとして動いていたため、いろいろ取り残されている感じがあります。
先日手始めに、Dockerで開発環境を構築してみました。

いまさらDockerでRails(API)+Rails(worker)+SQS+MySQLの環境を構築してみた

今回はDocker環境で開発する前に、こんな場面ではどうするんだろうと疑問に思っていたことと、その場面での実際の対応方法をご紹介したいと思います。

編集したソースコードをDockerコンテナに反映する

私の環境ではホストOSはMacでDocker for Macの環境のため、ソースコード編集はホストOS上のvimで行い、実行環境はDockerコンテナという構成になっています。

↑大雑把ですが上図のようなイメージです。

開発時には編集したソースコードをDockerコンテナに反映する必要がありますが、開発ディレクトリをDockerコンテナにマウントすることで編集時に即時反映することが可能です。

  app:
    tty: true
    stdin_open: true
    build:
      context: .
      dockerfile: Dockerfile-dev
    container_name: app_container
    command: bundle exec shoryuken -R -C config/shoryuken.yml
    networks:
      - default
    volumes:
      - .:/app

開発環境一式を以前書いたブログにまとめたようにdocker-composeで管理しているので、docker-compose.ymlで上記のようにvolumesの設定をすることで、実行ディレクトリをそのままdockerのアプリ実行ディレクトリにマウントすることができます。

Dockerコンテナ上でrails c

ログファイルの確認は開発ディレクトリの中身をマウントしているので直接tailするなりして見ていますが、rails cを使う場合、Dockerコンテナ内にしか開発環境がない状況ではコンソールにログインして実行する必要があります。
実際の方法を調べるまではサーバのようにコンテナに対してSSHログインするのかと思っていましたが、よく考えてみたら1プロセスで動いているコンテナにSSHサーバは入っていないので、SSHでログインするということはありませんでした。
コンテナ上でコマンドを実行する場合には以下のようにシェルにアクセスします。

docker exec -it app_container bash

上記の例ではapp_containerというDockerコンテナのbashに入れます。

あとはrails cコマンドを実行するのみです。

lanchester@3d2232e5186f:~$ bundle exec rails c

Dockerコンテナ上でbinding.pry

デバッグ時などに使うと便利なrpy-railsですが、Dockerコンテナ上で実行されているRails上で実行するためにはコンテナのコンソールをアタッチします。

docker attach app_container

コンソールをアタッチすると、Railsのデバッグログが表示されて、コンソールでbundle exec rails sを実行したのと同じ状態になります。

Control-P + Qでアタッチしたコンソールから抜けることができます。

Control-Dでも抜けることは可能ですが、その場合コンテナ自体も停止します。

15
12
1

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
15
12