Я начинаю работать с рельсами с помощью Docker. В настоящее время я следую инструкциям по настройке среды разработки. Все работает хорошо. (для сборки, запуска). Но теперь я хочу настроить Ruby Remote SDK для Rubymine, поэтому я установил SSH на контейнер докеров (контейнер ruby, я установил SSH, потому что он нужен для установки удаленного SDK).
Вот 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 '[email protected]\s*required\s*[email protected] optional [email protected]' -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
И 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
(Для ssh → in flow эта ссылка https://docs.docker.com/engine/examples/running_ssh_service/)
Затем я соединяю ssh с контейнером. Вот мои шаги:
-
Получить порт ssh:
Доклерский порт demorailsdocker_web_1
# Вот результат
22/tcp → 0.0.0.0:32768
3000/tcp → 0.0.0.0:3000
-
Подключить ssh к контейнеру
ssh root @localhost -p 32768
# Результат ssh_exchange_identification: соединение закрыто удаленным хостом
Я выясню, что проблема связана с установкой в файле Docker.
Потому что, когда я удаляю эти строки в файле докеров,
RUN mkdir /myapp
WORKDIR /myapp
ADD Gemfile /myapp/Gemfile
ADD Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
ADD . /myapp
И удалите эти строки в файле docker-compose.yml
volumes:
- .:/myapp
Затем я могу подключиться к SSH.
Я думаю, проблема связана с настройкой рабочего каталога.
Я могу подключить SSH к контейнеру, удалив эту строку в файле docker-compose.yml
command: bundle exec rails s -p 3000 -b '0.0.0.0'
Итак, я думаю, что проблема связана с рельсами. Но я не знаю, как это исправить.