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
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
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:
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
Connect ssh to container
ssh root@localhost -p 32768
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.
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:
You could also use this Dockerfile that sets up SSH correctly that will allow you to remotely connect to your web container: