在文章PyCharm使用之利用Docker镜像搭建Python开发环境中,该文章介绍了在PyCharm中如何利用Docker镜像搭建Python开发环境。在本文中,将会介绍如何使用PyCharm来配置SSH Interpreter,本文中的SSH Interpreter用Docker镜像来实现。

  演示项目的结构如下图所示:

制作带SSH服务的Docker镜像

  首先,我们先制作带SSH服务的Docker镜像,里面含有Python开发环境,Dockerfile文件为python_env.build,内容如下:

  1. FROM centos:7.2.1511
  2. # author label
  3. LABEL maintainer="jclian"
  4. # install related packages
  5. ENV ENVIRONMENT DOCKER_PROD
  6. RUN cd / && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
  7. && yum makecache \
  8. && yum install -y wget aclocal automake autoconf make gcc gcc-c++ python-devel mysql-devel bzip2 libffi-devel epel-release \
  9. && yum clean all
  10. # install python 3.7.0
  11. RUN wget https://npm.taobao.org/mirrors/python/3.7.0/Python-3.7.0.tar.xz \
  12. && tar -xvf Python-3.7.0.tar.xz -C /usr/local/ \
  13. && rm -rf Python-3.7.0.tar.xz \
  14. && cd /usr/local/Python-3.7.0 \
  15. && ./configure && make && make install
  16. # 创建src目录
  17. COPY src /root/src
  18. WORKDIR /root/src
  19. # install related packages
  20. RUN pip3 install -i https://pypi.doubanio.com/simple/ -r requirements.txt
  21. # expose port
  22. EXPOSE 15731
  23. # install ssh
  24. RUN yum -y update; yum clean all
  25. RUN yum -y install openssh-server passwd; yum clean all
  26. ADD ./start.sh /start.sh
  27. RUN mkdir /var/run/sshd
  28. RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
  29. RUN chmod 755 /start.sh
  30. RUN /start.sh
  31. ENTRYPOINT ["/usr/sbin/sshd", "-D"]

在这个CentOS系统中,我们配置了SSH服务,其中start.sh中含有账号名和密码,同时又配置了Python开发环境,start.sh文件的内容如下:

  1. #!/bin/bash
  2. __create_user() {
  3. # Create a user to SSH into as.
  4. useradd user
  5. SSH_USERPASS=newpass
  6. echo -e "$SSH_USERPASS\n$SSH_USERPASS" | (passwd --stdin user)
  7. echo ssh user password: $SSH_USERPASS
  8. }
  9. # Call all functions
  10. __create_user

requirements.txt的内容如下:

  1. tornado==5.1.1
  2. jieba==0.39

安装的第三方模块为tornado和jieba。制作镜像的脚本为build.sh,内容如下:

  1. #!/usr/bin/env bash
  2. TIMENOW=`date +%y.%m.%d.%H%M`
  3. # 进行docker镜像打包
  4. docker build -f python_dev.build -t ssh_docker_python_dev:${TIMENOW} .

运行该镜像,生成的docker镜像为ssh_docker_python_dev:19.12.25.1346, 如下所示:

  1. $ docker images | grep ssh_docker
  2. ssh_docker_python_dev 19.12.25.1346 cca5b78c199c 9 hours ago 988MB

到此,制作docker镜像完成。

测试镜像的SSH服务

  接着,我们在本地启动该docker镜像,命令如下:

  1. $ docker run -d -p 49154:22 ssh_docker_python_dev:19.12.25.1346

接着输入:

  1. $ ssh -p 49154 user@127.0.0.1

在接受凭证时选择yes,并输入密码“newpass”,就能顺利进入该容器内部了,尝试Python使用,如下:

  1. $ ssh -p 49154 user@127.0.0.1
  2. user@127.0.0.1's password:
  3. [user@4718f33bc470 ~]$ python3
  4. Python 3.7.0 (default, Dec 24 2019, 23:58:12)
  5. [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
  6. Type "help", "copyright", "credits" or "license" for more information.
  7. >>> import jieba
  8. >>> list(jieba.cut("三亚的风景很不错"))
  9. Building prefix dict from the default dictionary ...
  10. Dumping model to file cache /tmp/jieba.cache
  11. Loading model cost 1.197 seconds.
  12. Prefix dict has been built succesfully.
  13. ['三亚', '', '风景', '', '不错']

在PyCharm中配置SSH Interpreter

  在PyCharm的系统配置中,在“Project Interpreter”选择中可以看到右侧的“Project Inter”中没有interpreter,我们点击有变动的小齿轮,选择“Add”,如下图:



在弹出来的界面中,我们选择interpreter的类型为“SSH Interpreter”,同时设置连接信息如下图:

点击“Next”,输入密码“newpass”,再点击“Next”,选择Interpreter的路径为“/usr/local/Python-3.7.0/python”,如下图:



需要注意的是,在这里我们能够看到本地项目路径对应于容器内的/tmp/pycharm_project_951路径,同时会把该项目中的文件自动上传至容器内对应的项目路径。最后点击“Finish”即可完成SSH Interpreter的配置。

测试SSH Interpreter

  配置好Python环境后,我们用jieba_test.py作为测试文件,来验证Python环境是否配置好。jieba_test.py的代码如下:

  1. # -*- coding: utf-8 -*-
  2. # author: Jclian91
  3. # place: Pudong Shanghai
  4. # time: 2:09 下午
  5. import os, re, json, traceback
  6. import jieba
  7. if __name__ == '__main__':
  8. sent = '最近这几天,我都在三亚上班,看着海开发的感觉还不错。'
  9. print(list(jieba.cut(sent)))

输出结果如下:

  1. ssh://user@127.0.0.1:49154/usr/local/Python-3.7.0/python -u /tmp/pycharm_project_58/jieba_test.py
  2. Building prefix dict from the default dictionary ...
  3. Loading model from cache /tmp/jieba.cache
  4. Loading model cost 0.775 seconds.
  5. Prefix dict has been built succesfully.
  6. ['最近', '这', '几天', ',', '我', '都', '在', '三亚', '上班', ',', '看着', '海', '开发', '的', '感觉', '还', '不错', '。']

太好了,Docker容器内的Python开发环境是可以使用的。这时候,我们在进入Docker容器内去查看下,如下:

  1. $ docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 4718f33bc470 ssh_docker_python_dev:19.12.25.1346 "/usr/sbin/sshd -D" 20 minutes ago Up 20 minutes 15731/tcp, 0.0.0.0:49154->22/tcp brave_nobel
  4. $ docker exec -it 4718f33bc470 bash
  5. [root@4718f33bc470 src]# cd /tmp/pycharm_project_58/
  6. [root@4718f33bc470 pycharm_project_58]# ls -l
  7. total 24
  8. -rw-rw-r-- 1 user user 960 Dec 25 14:12 README.md
  9. -rw-rw-r-- 1 user user 150 Dec 25 13:21 build.sh
  10. -rw-rw-r-- 1 user user 284 Dec 25 14:10 jieba_test.py
  11. -rw-rw-r-- 1 user user 1100 Dec 25 13:46 python_dev.build
  12. drwxrwxr-x 2 user user 4096 Dec 25 22:48 src
  13. -rw-rw-r-- 1 user user 235 Dec 25 13:21 start.sh
  14. [root@4718f33bc470 pycharm_project_58]#

可以看到,容器中的/tmp/pycharm_project_58路径下确实包含了本地项目的所有文件。

  关于如何制作带SSH服务和Python开发环境的Docker镜像以及如何在PyCharm中配置SSH Interpreter的讲述到此结束,感谢大家的阅读~

  该演示项目已上传至Github,网址为:https://github.com/percent4/Python_docker

注意:不妨了解下笔者的微信公众号: Python爬虫与算法(微信号为:easy_web_scrape), 欢迎大家关注~

PyCharm使用之配置SSH Interpreter的更多相关文章

  1. pycharm搭建开发配置,远程调试,数据库配置,git配置等

    1 开发环境搭建 1.1 简介 使用虚拟机作为代码运行环境,本地使用pycharm进行代码编辑,使用远程调试功能进行debug. 1.1 安装centos虚拟机环境: 1.操作系统: 2.网络配置: ...

  2. 安装好Pycharm后如何配置Python解释器简易教程

    呃呃,遇到坑了...... 安装完Python,没有去配置好Python解释器,直接打开Python项目包,去运行程序,程序输出结果只是显示 Process finished with exit co ...

  3. Linux2 在Linux(CentOS)上配置SSH免登陆

    前言:      本文主要是我在安装hadoop之前,需要先配置SSH免登陆.通过网上搜索,发现不少类似的资料,但多少都有些小问题,所以结合自己的实践,记录在此,作为参考.如果能帮助到其他人,自然是更 ...

  4. CentOS配置SSH免密码登录后,仍提示输入密码

    CentOS配置SSH无密码登录需要3步: 生成公钥和私钥 导入公钥到认证文件,更改权限 测试 1.生成公钥和私钥 ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 默 ...

  5. linux配置ssh互信

    公钥认证的基本思想: 对信息的加密和解密采用不同的key,这对key分别称作private key和public key,其中,public key存放在欲登录的服务器上,而private key为特 ...

  6. 如何配置ssh免密码登录

    [TOC] 如果你在管理一堆unix机器,每次登录都要输入密码是挺烦的事情,一方面为了安全我们一般不会将所有机器的密码都设置成一样,另一方面就算一样每次都输入一遍也很麻烦. 这种情况下我们一般是用ss ...

  7. CentOS配置ssh无密码登录

      CentOS配置ssh无密码登录的注意点   前提配置:使用root登录修改配置文件:/etc/ssh/sshd_config,将其中三行的注释去掉,如下: 然后重启ssh服务:service s ...

  8. Sco Openserver下 配置SSH服务(图解)

    Sco Openserver下 配置SSH服务 好久没玩儿Sco Unix系统了,春节过后为邮政系统的一个朋友调试系统( 装了个远程服务) ,这两天将安装过程回忆了一下,总结出来给大家分享. 本试验需 ...

  9. java开发--配置ssh

    下面,我查阅了大量资料,走了不少错路,最后总结了经验后搭建出来的SSH框架. 希望第一次搭建SSH框架的会从中得到启发. 开发环境: eclipse-jee-kepler-SR1-win32 4.3. ...

随机推荐

  1. 《DSP using MATLAB》Problem 8.17

    代码: %% ------------------------------------------------------------------------ %% Output Info about ...

  2. Java学习之一(引用相关)

    1.Java概述 首先,Java是一门面向对象的编程语言.相对于C/C++等语言,Java中没有指针,但是这不代表指针等知识不重要:Java中不存在多继承但是存在多接口.在我自己的学习过程之中,我偏向 ...

  3. Django之模板语言(二)-----Filter

    1.其他常用的模板语言: 通过模板语言可以让前端页面显示数据,数据可以是基本数据类型,也可以是对象亦或者对象的列表,结合着模板中的for.if等配合使用. 要注意前端页面中,出现没有后端数据的情况,随 ...

  4. java虚拟机(十一)--GC日志分析

    GC相关:java虚拟机(六)--垃圾收集器和内存分配策略 java虚拟机(五)--垃圾回收机制GC 打印日志相关参数: -XX:+PrintGCDetails -XX:PrintGCTimestam ...

  5. 掌握ES6/ES2015核心内容

    ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015. 也就是说,ES6就是ES2015. ...

  6. PAT甲级——A1037 Magic Coupon

    The magic shop in Mars is offering some magic coupons. Each coupon has an integer N printed on it, m ...

  7. PAT甲级——A1031 Hello World for U

    Given any string of N (≥) characters, you are asked to form the characters into the shape of U. For ...

  8. SpringData初探

    前言 项目中用到这个,没有学过,手动搭建,测试执行流程, 理论的东西有时间再补充 Maven依赖 <?xml version="1.0" encoding="UTF ...

  9. Bootstrap.之模态框 显示在遮罩层后面

    Bootstrap.之模态框 显示在遮罩层后面 问题描述: 在使用bootstrap模态框,弹出的窗口在遮罩层后面,见图: 解决方案: 保证模态框的代码,所在的上一级(父元素)是body标签,即可.例 ...

  10. 洛谷P5319 奥术神杖

    题意:给你若干个串和一个填了一部分的串.补完这个串使得 (每个串的匹配次数 * 权值) ^ (1 / 所有串匹配次数) 最大. 解:把这个东西随便取一个对数,就变成了分数规划. 二分.然后在AC自动机 ...