Mac使用Docker搭建python测试执行环境

首先拉取 python的镜像

docker pull python:3.5

新建一个文件目录/VscodePythonProjects,并创建python测试文件pyth.py

#!/usr/bin/python
print("Hello, World!");

使用docker run 执行python文件

~% docker run --rm -v /VscodePythonProjects:/usr/src/file -w /usr/src/file python:3.5 python pyth.py
Hello, World!

参数说明:

--rm 执行完后删除容器,避免残留过多容器
-v 将主机的py文件目录挂载到容器中的/usr/src/file
-w 指定容器的/usr/src/file目录为工作目录
python:3.5 指定镜像

~/.ssh目录里,增加 py文件,内容如下:

#!/bin/bash
echo `docker run --rm -v /VscodePythonProjects:/usr/src/file -w /usr/src/file python:3.5 python $1`

这样在任意的目录里直接执行py命令了

~% py pyth.py
Hello, World!

当然,在mac系统上面直接安装python也能实现相同的效果。但是如果不想污染系统,也能进行Python测试的话,这种也是一种方式。

上述的方式,只能执行没有依赖的python代码,但是比如说我要运行引入了redis模块的代码,就会报redis模块不存在的问题,这种情况,我们就需要在docker的容器中安装 redis模块了。

~% docker run --name "python3.5" -it -v /VscodePythonProjects:/usr/src/file  -w /usr/src/file python:3.5 /bin/bash
root@2870e7cf8e74:/usr/src/file#

执行上面命令将进入 创建的python容器的命令行。然后执行命令安装redis模块,使用国内镜像可以更快执行

root@2870e7cf8e74:/usr/src/file# pip install redis -i https://pypi.tuna.tsinghua.edu.cn/simple
DEPRECATION: Python 3.5 reached the end of its life on September 13th, 2020. Please upgrade your Python as Python 3.5 is no longer maintained. pip 21.0 will drop support for Python 3.5 in January 2021. pip 21.0 will remove support for this functionality.
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting redis
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/a7/7c/24fb0511df653cf1a5d938d8f5d19802a88cef255706fdda242ff97e91b7/redis-3.5.3-py2.py3-none-any.whl (72 kB)
     |████████████████████████████████| 72 kB 668 kB/s
Installing collected packages: redis
Successfully installed redis-3.5.3
WARNING: You are using pip version 20.2.3; however, version 20.3.4 is available.
You should consider upgrading via the '/usr/local/bin/python -m pip install --upgrade pip' command.

然后就可以正常运行如下引入redis模块的python文件了,此处要注意,host,参考代码是localhost,是无法执行的,要将host换为安装了redis的宿主机的ip。

import redis

r = redis.Redis(host='10.2.147.43', port=6379, decode_responses=True)
r.set('name', 'runoob')
print(r['name'])
print(r.get('name'))
print(type(r.get('name')))
root@2870e7cf8e74:/usr/src/file# python redis-test.py
runoob
runoob
<class 'str'>

我们在容器中执行exit命令以后,使用docker ps -a 可以看到 python容器变为exited状态

VscodePythonProjects % docker ps -a
CONTAINER ID   IMAGE                                       COMMAND                  CREATED         STATUS                      PORTS                                        NAMES
2870e7cf8e74   python:3.5                                  "/bin/bash"              5 minutes ago   Exited (0) 26 seconds ago                                                python3.5

如果我们想再次使用这个容器,只要启动容器就可以了

VscodePythonProjects % docker start 2870e7cf8e74
2870e7cf8e74
VscodePythonProjects % docker ps -a
CONTAINER ID   IMAGE                                       COMMAND                  CREATED         STATUS                      PORTS                                        NAMES
2870e7cf8e74   python:3.5                                  "/bin/bash"              7 minutes ago   Up About a minute                                                        python3.5
VscodePythonProjects % docker exec -it 2870e7cf8e74 /bin/bash
root@2870e7cf8e74:/usr/src/file# python redis-test.py
runoob
runoob
<class 'str'>

参考文档:

https://blog.csdn.net/u013355826/article/details/79963334

https://blog.csdn.net/gf19960103/article/details/109489632

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值