在文章PyCharm使用之利用Docker鏡像搭建Python開發環境中,該文章介紹了在PyCharm中如何利用Docker鏡像搭建Python開發環境。在本文中,將會介紹如何使用PyCharm來配置SSH Interpreter,本文中的SSH Interpreter用Docker鏡像來實現。
演示項目的結構以下圖所示:html
首先,咱們先製做帶SSH服務的Docker鏡像,裏面含有Python開發環境,Dockerfile文件爲python_env.build,內容以下:python
FROM centos:7.2.1511 # author label LABEL maintainer="jclian" # install related packages ENV ENVIRONMENT DOCKER_PROD RUN cd / && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && yum makecache \ && yum install -y wget aclocal automake autoconf make gcc gcc-c++ python-devel mysql-devel bzip2 libffi-devel epel-release \ && yum clean all # install python 3.7.0 RUN wget https://npm.taobao.org/mirrors/python/3.7.0/Python-3.7.0.tar.xz \ && tar -xvf Python-3.7.0.tar.xz -C /usr/local/ \ && rm -rf Python-3.7.0.tar.xz \ && cd /usr/local/Python-3.7.0 \ && ./configure && make && make install # 建立src目錄 COPY src /root/src WORKDIR /root/src # install related packages RUN pip3 install -i https://pypi.doubanio.com/simple/ -r requirements.txt # expose port EXPOSE 15731 # install ssh RUN yum -y update; yum clean all RUN yum -y install openssh-server passwd; yum clean all ADD ./start.sh /start.sh RUN mkdir /var/run/sshd RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N '' RUN chmod 755 /start.sh RUN /start.sh ENTRYPOINT ["/usr/sbin/sshd", "-D"]
在這個CentOS系統中,咱們配置了SSH服務,其中start.sh中含有帳號名和密碼,同時又配置了Python開發環境,start.sh文件的內容以下:mysql
#!/bin/bash __create_user() { # Create a user to SSH into as. useradd user SSH_USERPASS=newpass echo -e "$SSH_USERPASS\n$SSH_USERPASS" | (passwd --stdin user) echo ssh user password: $SSH_USERPASS } # Call all functions __create_user
requirements.txt的內容以下:linux
tornado==5.1.1 jieba==0.39
安裝的第三方模塊爲tornado和jieba。製做鏡像的腳本爲build.sh,內容以下:c++
#!/usr/bin/env bash TIMENOW=`date +%y.%m.%d.%H%M` # 進行docker鏡像打包 docker build -f python_dev.build -t ssh_docker_python_dev:${TIMENOW} .
運行該鏡像,生成的docker鏡像爲ssh_docker_python_dev:19.12.25.1346, 以下所示:git
$ docker images | grep ssh_docker ssh_docker_python_dev 19.12.25.1346 cca5b78c199c 9 hours ago 988MB
到此,製做docker鏡像完成。github
接着,咱們在本地啓動該docker鏡像,命令以下:web
$ docker run -d -p 49154:22 ssh_docker_python_dev:19.12.25.1346
接着輸入:算法
$ ssh -p 49154 user@127.0.0.1
在接受憑證時選擇yes,並輸入密碼「newpass」,就能順利進入該容器內部了,嘗試Python使用,以下:sql
$ ssh -p 49154 user@127.0.0.1 user@127.0.0.1's password: [user@4718f33bc470 ~]$ python3 Python 3.7.0 (default, Dec 24 2019, 23:58:12) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import jieba >>> list(jieba.cut("三亞的風景很不錯")) Building prefix dict from the default dictionary ... Dumping model to file cache /tmp/jieba.cache Loading model cost 1.197 seconds. Prefix dict has been built succesfully. ['三亞', '的', '風景', '很', '不錯']
在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的配置。
配置好Python環境後,咱們用jieba_test.py做爲測試文件,來驗證Python環境是否配置好。jieba_test.py的代碼以下:
# -*- coding: utf-8 -*- # author: Jclian91 # place: Pudong Shanghai # time: 2:09 下午 import os, re, json, traceback import jieba if __name__ == '__main__': sent = '最近這幾天,我都在三亞上班,看着海開發的感受還不錯。' print(list(jieba.cut(sent)))
輸出結果以下:
ssh://user@127.0.0.1:49154/usr/local/Python-3.7.0/python -u /tmp/pycharm_project_58/jieba_test.py Building prefix dict from the default dictionary ... Loading model from cache /tmp/jieba.cache Loading model cost 0.775 seconds. Prefix dict has been built succesfully. ['最近', '這', '幾天', ',', '我', '都', '在', '三亞', '上班', ',', '看着', '海', '開發', '的', '感受', '還', '不錯', '。']
太好了,Docker容器內的Python開發環境是能夠使用的。這時候,咱們在進入Docker容器內去查看下,以下:
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 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 $ docker exec -it 4718f33bc470 bash [root@4718f33bc470 src]# cd /tmp/pycharm_project_58/ [root@4718f33bc470 pycharm_project_58]# ls -l total 24 -rw-rw-r-- 1 user user 960 Dec 25 14:12 README.md -rw-rw-r-- 1 user user 150 Dec 25 13:21 build.sh -rw-rw-r-- 1 user user 284 Dec 25 14:10 jieba_test.py -rw-rw-r-- 1 user user 1100 Dec 25 13:46 python_dev.build drwxrwxr-x 2 user user 4096 Dec 25 22:48 src -rw-rw-r-- 1 user user 235 Dec 25 13:21 start.sh [root@4718f33bc470 pycharm_project_58]#
能夠看到,容器中的/tmp/pycharm_project_58路徑下確實包含了本地項目的全部文件。
關於如何製做帶SSH服務和Python開發環境的Docker鏡像以及如何在PyCharm中配置SSH Interpreter的講述到此結束,感謝你們的閱讀~
該演示項目已上傳至Github,網址爲:https://github.com/percent4/P... 。
注意
:不妨瞭解下筆者的微信公衆號: Python爬蟲與算法(微信號爲:easy_web_scrape), 歡迎你們關注~