3

Vagrant と docker を使って Rails アプリを実行する最適な開発ワークフローを見つけようとしています。私のdockerfileにはこれがあります:

FROM quirky/rails:latest

RUN mkdir /opt/app
WORKDIR /opt/app

# Install gems
ADD ./Gemfile /opt/app/Gemfile
ADD ./Gemfile.lock /opt/app/Gemfile.lock
RUN bundle install

# Instal npm packages
ADD ./package.json /opt/app/package.json
RUN npm install

# Expose directories and ports
VOLUME /opt/app
EXPOSE 3000

# Run the web server
WORKDIR /opt/app
CMD rm -f /opt/app/tmp/pids/server.pid && bundle exec rails s

私の Vagrantfile は次のようになります。

 config.vm.define "app" do |app|
    app.vm.provider "docker" do |d|
      d.build_dir = "."
      d.link "db:db"
      d.link "redis:redis"
      d.link "solr:solr"
      d.volumes = ["/app:/opt/app"]
      d.ports = ["3000:3000"]
      d.vagrant_vagrantfile = "./docker/Vagrantfile"
      d.remains_running = true
    end
  end

  config.vm.define "db" do |db|
    db.vm.provider "docker" do |d|
      d.image = "paintedfox/postgresql"
      d.name = "db"
      d.env = {USER: "vagrant", PASS: "password"}
      d.vagrant_vagrantfile = "./docker/Vagrantfile"
    end
  end

  config.vm.define "redis" do |redis|
    redis.vm.provider "docker" do |d|
      d.image = "dockerfile/redis"
      d.name = "redis"
      d.ports = ["6379:6379"]
      d.vagrant_vagrantfile = "./docker/Vagrantfile"
    end
  end

  config.vm.define "solr" do |solr|
    solr.vm.provider "docker" do |d|
      d.image = "quirky/solr"
      d.name = "solr"
      d.ports = ["8080:8080"]
      d.vagrant_vagrantfile = "./docker/Vagrantfile"
    end
  end

通常、何かをデバッグしたい場合debuggerは、コードにステートメントを貼り付けて、それをローカル プロセスとして実行すると、ブレークポイントにヒットして pry などのデバッガー コンソールが表示されます。これは vagrant 内のコンテナ内でどのように機能しますか?

これは、開発環境を開始する方法です。

vagrant up app --provider=docker

バックグラウンドで起動します。それを起動して接続する方法はないようです。vagrant に渡すことができるコマンドまたはフラグがありませんか?

4

2 に答える 2