问题
需要在一台新买的 linux 机器上运行一个脚本程序。
- 自带的 python 没有 pip 的包安装工具
- 安装 pip 需要先安装 setuptools
- 安装 setuptools 有需要什么解压软件
- 此处省略…,一堆关联的东向都要下载安装
解决方法1:
根据报的错误一个一个查找解决
解决方法2:
方式1解决着是在比较困难,而且换个环境还会遇到其它的问题。因此准备使用 docker 搭建一个python 的运行环境环境
docker python环境搭建
-
安装 docker, 这个之前有同事安装的有,直接拿来用了(之前我一直没有用过)
-
项目的基本结构,测试用的
-
文件 pip.conf, 配置 pip 镜像源
[global] index-url = https://pypi.tuna.tsinghua.edu.cn [install] trusted-host = https://pypi.tuna.tsinghua.edu.cn
-
文件 requirements.txt,需要下载的包
web.py
-
文件 hello.py, 复制于演示文件
import web urls = ( '/', 'index' ) class index: def GET(self): return "Hello, world!" if __name__ == "__main__": app = web.application(urls, globals()) app.run()
-
文件 Dockerfile,
FROM python # 指定镜像基础 WORKDIR /usr/src/app # 设置工作目录,在那里目录执行下面的命令 COPY ./pip.conf ~/.pip/pip.conf # 复制镜像源 COPY requirements.txt ./ # 复制依赖声明文件 RUN pip install --no-cache-dir -r requirements.txt # 执行安装 ENTRYPOINT [ "python" ] CMD [ "hello.py" ]
-
构建镜像命令
# 目录 /home/pythoncode docker build -t pythonweb .
-
镜像构建完毕
使用构建的docker 环境运行脚本
docker run -p 0.0.0.0:9999:8080 --privileged=true --rm -v /home/pythoncode/code:/usr/src/app pythonweb
-p 0.0.0.0:9999:8080
, 把docker 的 8080 端口映射到主机的 9999 端口上来--privileged=true
,解决后面 -v 挂载目录的问题,由于 selinux 导致没有权限访问 code 文件。 报错 Permission denied-v /home/pythoncode/code:/usr/src/app
, 把主机的 /home/pythoncode/code 目录映射到docker的 /usr/src/app 目录下
测试运行成功
问题连接参考
docker端口映射
Docker -v 对挂载的目录没有权限 Permission denied
使用docker部署python运行环境
Collecting requests (from -r requirements.txt (line 1))