(1)pycharm专业版(2018.1.2)位于windows10上
(2)docker-daemon(1.13.1)位于centos7上,centos7地址为10.74.53.141
在win10上安装pycharm,在linux上安装docker engine作为docker-host,在docker-container里面安装python解释器;
pycharm通过tcp/2375端口与docker-host通信,可以直接发送docker指令,然后让linux执行,
通过docker指令,可以创建image,运行container,实现host与container之间目录挂载,端口映射等操作;
至于代码的上传,不同的docker部署方式不一样,详细信息,看下文。
(1)编辑docker服务配置文件,保存修改【vim /lib/systemd/system/docker.service】
(2)重载配置,并重启服务
$ systemctl daemon-reload
$ sudo service docker restart
(3)测试
在另一台主机上,比如windows10上,telnet 10.74.53.141 2475,可以成功访问docker-daemon
(1)新建一个纯python工程,暂时python解释器可忽略
(2)连接docker-host:
导航栏依次点击 File ---> Settings,弹窗 Settings对话框,继续点击 Build, Execution, Deployment ---> Docker
依次点击【工具栏下方标题栏右边的下拉箭头】---> Edit Configurations... ---> 弹出【Run/Debug Configurations】对话框 ---> 依次点击【+】---> Docker ---> 弹出下拉列表,有三个选项:Docker Image,Docker-compose,Dockerfile。区别如下表:
docker image | dockerfile | docker-compose | |
适用场景 | 适用于docker-host上有程序运行所需的image | 适用于docker-host上没有有程序运行所需的image | 适用于docker-host上没有有程序运行所需的image |
镜像创建 | doker-host上已经存在 | dockerfile.ini | dockerfile.ini |
端口映射 | pycharm配置 | pycharm配置 | docker-compose.yml |
目录挂载 | pycharm配置 | pycharm配置 | docker-compose.yml |
容器启动时执行的命令 | pycharm配置 | dockerfile.ini | dockerfile.ini |
代码上传 | pycharm通过sftp上传到docker-host,docker-host通过目录挂载同步给docker-container | dockerfile.ini | dockerfile.ini |
针对代码的改变 | 无须任何变动 | 需要增加dockefile.ini文件 | 需要增加dockerfile.ini、docker-compose.yml文件 |
6.1 采用docker image方式
(1)确认docker-host上image已经存在
(2)配置docker-host和pychram目录映射,上传pycharm源码到docker-host
导航栏依次点击 Tools ---> Deployment ---> Confiuration ,弹窗 Deployment对话框
配置账号和密码,测试连接是否成功
配置pycharm和docker-host上的目录映射
上传pycharm工程下的代码到docker-host上
右击工程目录下需要上传到docker-host上的文件或者文件夹,依次选择:Deployment ---> Upload to [email protected],即可。
(3)配置docker环境,并运行程序
6.2 采用dockerfile方式
(1)编写dockerfile.ini文件
FROM caowencomeon/uwsgi:1.0
COPY src /testbed/src
COPY uwsgi.ini /testbed/uwsgi.ini
VOLUME /var/log
VOLUME /data
EXPOSE 5000
CMD ["uwsgi", "/testbed/uwsgi.ini"]
(2)配置docker环境,并运行程序
6.3 采用docker-compose方式
(1)编写docker-compose.yml文件
version: "2.0"
volumes:
applog:
sharedata:
services:
app:
container_name: app-dev
build:
context: ./testbed
dockerfile: dockerfile.ini
image: app-dev:docker-compose
volumes:
- applog:/var/log
- sharedata:/data
privileged: true
ports:
- 5000:5000
(2)配置docker环境,并运行程序