准备

  • Ubuntu 16.04(远程服务器)
  • Mac或Ubuntu(本地)
  • docker(远程服务器)
  • openssh-server(远程服务器)
  • Pycharm profession版(本地)
  • -ssh(本地)

原理

本地利用SSH链接远程服务器交互数据,在本地Pycharm上显示远程结果。

配置流程

  1. 在远程服务器创建docker container
  2. 远程服务器ssh服务配置
  3. Pycharm链接远程服务器(文件同步)
  4. Pycharm链接远程的docker container (配置远程编译器)

 

一、远程服务器创建docker container

在这步之前,你应该安装好docker并且下载好了相应的image。

二、 远程服务器ssh服务配置

接下来需要配置远程服务器的ssh服务。 
第一步,我们需要在远程服务器上安装openssh-server

# Ubuntu
$ apt update && apt install openssh-server

Ps:这里注意,不仅仅是远程服务器上要安装ssh服务,同时远程服务器上的docker container也内也需要安装openssh-server。

第二步,安装完成以后需要配置ssh服务

# 次配置在docker container中完成
$ echo 'root:test' | chpasswd
# 将Root的密码修改为test
$ sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
# 允许使用root身份登录
$ sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd

$ echo "export VISIBLE=now" >> /etc/profile

第三步,配置好ssh服务之后重启ssh服务

service ssh restart

第四步,测试docker container中ssh服务端口在远程服务器上的映射

# 此操作在远程服务器
$ docker port <your container name> 22
# 此操作将查看docker container中端口22,在远程服务器上端口的映射

# 输出结果如下所示
0.0.0.0:8022
# 表明只要ssh链接远程服务器的8022端口,实际是链接docker container中的22端口。

第五步,测试是否能够使用ssh链接docker container  

$ ssh root@<你服务器的ip地址> -p 8022
# 密码就是刚刚重新设置的test

如果能够链接成功到docker container就完成了此次ssh的配置。
PS:如果失败请按以下顺序检查
1.ssh的端口配置是否正确?(包括服务器和docker container)
2.是否开启了防火墙,将端口禁用?

Pycharm链接远程docker container(文件同步)

现在开始配置Pycharm

第一步,配置SFTP 
在导航栏中 Tools>Depolyment>Configuration中添加配置SFTP。 
如图 

pycharm docker开发环境 pycharm docker远程开发_远程服务器

  

pycharm docker开发环境 pycharm docker远程开发_docker_02

PS:这里的root密码就是之前设置好的test

第三步,配置SFTP中的mapping

 

pycharm docker开发环境 pycharm docker远程开发_服务器_03

都配置完之后。打开自动上传功能 
Tools>Depolyment>Automatic Upload(always) 
本地修改好代码只要按保存键就自动将本地代码上传至远程docker container中。 
到这里已经配置好代码的自动同步了。还差最后一步,远程调试就配置成功。 

pycharm docker开发环境 pycharm docker远程开发_远程服务器_04

 

pycharm docker开发环境 pycharm docker远程开发_docker_05

启动DjangoServer,提供前台访问
选择Run -> Edit Configration
增加Django server,起名如:djangoserver

pycharm docker开发环境 pycharm docker远程开发_pycharm docker开发环境_06

配置docker
服务器docker需要允许2375端口的连接

sudo systemctl status docker 查看是否开启2375远程

如果没有
sudo vim /lib/systemd/system/docker.service 进入

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H  tcp://0.0.0.0:2375    -H unix:///var/run/docker.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always

systemctl daemon-reload
sudo service docker restart
再次运行监控查看
sudo systemctl status docker

 

pycharm上进行设置

pycharm docker开发环境 pycharm docker远程开发_服务器_07

 

I can feel you forgetting me。。 有一种默契叫做我不理你,你就不理我