Pycharm和Docker

​ 由于上周操作系统重置了,之前安装得Python环境全部没有了。又不想去重新安装环境,由于目前有一台服务器,并且已经安装了了Docker服务,此服务器也只是挂载了一个博客,有大部分得空间是被闲置得。没有利用起来。所以决定在Docker中去部署一个Python得解释器。可以给我学习Python提供环境,同时在Docker上也可以很方便得切换Python得版本。

一、服务器端安装Docker-CE

Centos官方源安装教程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#安装一些系统必要的工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
#添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 查/etc/yum.repos.d/docker-ce.repo 中的ur[地址是不是都是阿里云的]
vi /etc/yum.repos.d/docker-ce.repo
# 如果不是,那么把download-stage.docker.com全部替换为mirrors。aliyun.com/docker-ce/

#更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce

#使用docker version可以看到client端的信息
docker version

#启动服务器再次使用docker version 就可以看到服务器端和客户端的docker信息了
systemctl start docker

Ubuntu安装

1
2
3
4
5
6
7
8
9
10
11
12
#安装一些系统必要的工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
#安装GPG证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
#写入软件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
#更新并安装Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce
#开启Docker服务
sudo service docker start

docker加速地址

在/etc/docker/daemon.json文件中加入一下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
"registry-mirrors": [
"https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc"
]
}

若是没有这个文件,则在/etc/docker目录下创建一个即可

二、Pycharm配置Docker

服务器端配置

Pycharm的社区版本是不支持使用docker的。

在服务器上配置docker,允许docker远程连接。修改docker被systemd管理的配置文件/lib/systemd/system/docker.service

1
vim /lib/systemd/system/docker.service

找到 ExecStart 所在行

1
2
- ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
+ ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

注意防火墙端口一定要开放,不然连接不上。修改完成后需要重启或者是重新加载systemd服务。

1
systemctl daemon-reload

Pycharm配置

在setting -> python interpreter -> add python interpreter 中选择docker.

image-20241212161549143

在Tcp socket的 Engine API URL 中 tcp://ip:2375,ip即为Python解释器所在的服务器的地址。Path Mappings这个是设置当前本地项目代码的路径和docker所在服务器的的源码路径映射(后面具体说)。

Path Mappings不是docker数据卷的映射。

在配置完成后,可以在左下角的toolbar 栏看到一个service或者就是docker的菜单栏,点击进去就可以看到刚刚配置的docker。右击连接就可以连接到服务器的docker了。可以对docker进行镜像容器等操作。

现在配置pycharm自动上传源码到服务器的指定路径,在services中右击Docker,点击Edit Configuration,在Path Mappings中Local path选择配置本地的当前项目的源码路径。例如D:\PycharmProjects\code ,Virtual machine path 的配置是docker所在服务器的的源码路径。例如:/opt/project/。在这里配置完成后(这里的配置真的是反人类),还需要在以下地方进行配置,才能实现源码文件的自动上传到服务器的指定路径下。

代码上传配置

在顶部的菜单栏的Tools -> Deployment -> Configuration中去配置一个SFTP。

可以勾选住Deployment -> Automatic Upload 这样在代码发生改变的时候会自动上传服务器。就不需要每次手动上传了。

image-20241213094038188

在Configuration中如下去添加一个配置即可。Root path:就是源码文件要上传的服务器路径。SSH configuration就就是服务器的配置信息。

image-20241213095924110

完成上述配置以后还需要对python默认配置文件进行配置,这样后续在创建python文件的时候就不需要在配置了。

image-20241213101310565

完成上述配置以后,测试代码是否可以运行,导入模块Pycharm可能会误报模块没有被检测到,但是不影响程序的执行。

image-20241213102530201

在控制台出现代码的执行结果,就表示配置成功了。