Debug rails app inside docker use Intellij/Rubymine

I’m start working rails development with Docker.
Currently, I follow some tutorial to setup development environment.
Everything work well. (for build, run).
But now, I want to setup Ruby Remote SDK for Rubymine, so I installed SSH on docker container (the ruby container; I INSTALLED SSH BECAUSE IT’S NEEDED FOR SETTING REMOTE SDK).

Here is Dockerfile

  • Execution is overlapped nodes created by docker selenium grid and distribution with testNG data provider how avoid this?
  • How are docker-machine certs used?
  • Docker and MySQL can't connect
  • Single haproxy instance running on http as well as tcp mode
  • Suggestions for carrying out automation using docker
  • Cannot connect to the Docker daemon. Debian 8 Jessie
  • FROM ruby:2.2.0
    # Install package
    RUN apt-get update -qq && apt-get install -y \
        build-essential \
        libpq-dev \
        nodejs \
        openssh-server
    
    # Setting sshd
    RUN mkdir /var/run/sshd
    RUN echo 'root:root' | chpasswd
    RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config
    RUN sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config
    
    # SSH login fix. Otherwise user is kicked off after login
    RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
    
    ENV NOTVISIBLE "in users profile"
    RUN echo "export VISIBLE=now" >> /etc/profile
    EXPOSE 22
    CMD ["/usr/sbin/sshd", "-D"]
    
    RUN mkdir /myapp
    WORKDIR /myapp
    ADD Gemfile /myapp/Gemfile
    ADD Gemfile.lock /myapp/Gemfile.lock
    RUN bundle install
    ADD . /myapp
    

    And docker-compose.yml

    version: '2'
    services:
      db:
        image: postgres
      web:
        build: .
        command: bundle exec rails s -p 3000 -b '0.0.0.0'
        volumes:
          - .:/myapp
        ports:
          - "3000:3000"
          - "22"
        depends_on:
          - db
    

    (For ssh -> in flow this link https://docs.docker.com/engine/examples/running_ssh_service/)

    Then I connect ssh to the container.
    Here is my steps:

    1. Get port of ssh:

      docker port demorailsdocker_web_1

      # Here is result

      22/tcp -> 0.0.0.0:32768

      3000/tcp -> 0.0.0.0:3000

    2. Connect ssh to container

      ssh root@localhost -p 32768

      # Result
      ssh_exchange_identification: Connection closed by remote host

    I figure out the problem is related to setup in Dockerfile.

    Because when I remove those lines in docker file:

    RUN mkdir /myapp
    WORKDIR /myapp
    ADD Gemfile /myapp/Gemfile
    ADD Gemfile.lock /myapp/Gemfile.lock
    RUN bundle install
    ADD . /myapp
    

    And remove those lines in docker-compose.yml

     volumes:
          - .:/myapp
    

    Then I can connect to SSH.

    I think the problem is about setting work dir.


    I can connect SSH well to the container by removed this line in docker-compose.yml

    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    

    So I think the problem is about rails.
    But I don’t know how to fix it.

  • Docker: Connect via SSH to Remote MySQL server
  • Why https is forced?
  • docker-compose scale with sticky sessions
  • kube-ui dashboard 503 error caused by cAdvisor
  • How to acknowledge existing digital ocean droplet with docker-compose?
  • What are default credentials for docker cloud Ubuntu node?
  • One Solution collect form web for “Debug rails app inside docker use Intellij/Rubymine”

    Best I can tell you debug Ruby/Rails containers without the need to SSH in with the ruby-debug-ide gem that is made specifically for remote debugging:

    GEM: https://github.com/ruby-debug/ruby-debug-ide

    HOW TO: http://bzzt.io/posts/running-the-rails-debugger-in-a-docker-container-using-rubymine

    You could also use this Dockerfile that sets up SSH correctly that will allow you to remotely connect to your web container:

    GitHub: https://github.com/zchee/docker-rubymine

    Dockerfile: https://github.com/zchee/docker-rubymine/blob/master/Dockerfile

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.