2017-03-07 67 views
0

我試圖設置遠程調試到Docker Debian容器,以調試我的Windows筆記本電腦上的Ruby應用程序。如何在Docker容器中配置Debian SSHD進行遠程調試?

這是後導致我在這個方向: https://intellij-support.jetbrains.com/hc/en-us/community/posts/207649545-Use-RubyMine-and-Docker-for-development-run-and-debug-before-deployment-for-testing-

我對Ruby應用程序,並在SSHD容器中運行,但我發現了配置SSHD的配方是不符合Linux發行版完全兼容Ruby映像基於。

我根據本多克爾文檔頁面上我的SSHD配置:https://docs.docker.com/engine/examples/running_ssh_service/

我的圖像是基於紅寶石:從多克爾集線器,其使用的Debian 8,而不是在上面的SSHD實施例中使用的Ubuntu 16.04 2.2圖像。

我可以進入SSH提示符,但我無法使用dockerfile中設置的根目錄的屏幕錄像密碼進行登錄。

我接受任何解決方案的工作,或者正確啓用root登錄或添加具有正確權限的新用戶以允許遠程調試。我只是好奇Debian上下文中哪條路徑最直接。如果它創建一個新用戶,他們需要什麼權限?

另外,爲了清楚起見,我將此視爲試運行,並且顯然會確保在以某種方式去除部署應用程序以用於開發之外的任何環境時以某種方式去除SSHD功能。

在此先感謝您的幫助。

這是我目前dockerfile

FROM ruby:2.2 
RUN apt-get update && apt-get install -y \ 
    build-essential \ 
    libpq-dev \ 
    nodejs \ 
    openssh-server 

RUN mkdir /var/run/sshd 
RUN echo 'root:screencast' | chpasswd 
RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /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 

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

,這是我的搬運工,compose.yml

version: '2' 
services: 
    web: 
    build: . 
    command: /CivilService/docker-dev-start.sh 
    volumes: 
     - .:/CivilService 
    ports: 
     - "3000:3000" 
     - "3022:22" 

的docker-dev-start.sh看起來像這樣

#!/bin/bash 

# start the SSH server for connecting the debugger in development 
/usr/sbin/sshd -D & 
bundle exec rails s -p 3000 -b '0.0.0.0' 
+0

你Dockerfile缺乏一個CMD或入口點 – user2915097

+0

@ user2915097當您運行的泊塢窗,compose.yml適用命令'泊塢窗,構成up' –

+1

更改sed to'RUN sed -i's/PermitRootLogin。*/PermitRootLogin yes /'' – Matt

回答

1

不同的發行版可能會有略微不同的SSH配置,因此替換特定的字符串可能不起作用。

涵蓋任何類型的PermitRootLogin列使用:

RUN sed -i 's/PermitRootLogin .*/PermitRootLogin yes/' /etc/ssh/sshd_config