docker打包本地python项目为镜像时,排错记录

项目的结构如下,python文件均放在py目录下,dockerfile如下:

(tips: 通过pip freeze> requirements.txt 命令生成的requirements文件会包含更多包,如果想让镜像精简,只需要将你项目中用到的包及其依赖包下载即可)

下面讲解

将python项目打包成docker镜像过程中的一些排错经验:

出错1:

ImportError: libGL.so.1: cannot open sharedobject file: No such file or directory

原因:docker容器缺少cv2的依赖包

解决:需要提前安装,将

RUN apt-get update

RUN apt-get install 包 -y

添加到dockerfile

出错2:

ERROR: Could not find a version thatsatisfies the requirement xxxx==xxxx

ERROR: No matching distribution found for xxxx==xxxx

ERROR: Service 'web' failed to build : Thecommand '/bin/sh -c pip install -r requirements.txt' returned a non-zero code:1

原因:无法正确下载requirements相应包

解决:

思路1:换源,提高下载速度,推荐源有:

清华源:https://pypi.tuna.tsinghua.edu.cn/simple

阿里云源:http://mirrors.aliyun.com/pypi/simple/

中国科技大学源:https://pypi.mirrors.ustc.edu.cn/simple/

思路2:选择的源没有对应版本的包

cd到requirements文件目录,本地下载试试,执行

pip download -d pgs -r requirments.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

可以看到包的对应版本,如果你填的包在对应源上不存在,修改requirements文件为其他满足项目要求的版本(或者换源),即可

(下载成功后记得删除pgs文件夹)

思路3:

此时本地可以下载requirements包,但docker生成镜像仍报错,提示包不存在

需要重启docker:systemctlrestart docker

再试一次

出错3:

  1. Docker save保存镜像时报错:

Error response from daemon: file integritychecksum failed for "nginx-ingress-controller"

原因:docker缓存影响

解决:

深度清理缓存

(注意有风险,因为这个命令只会保留在使用的镜像,容器,数据卷,所以需谨慎)

sudo docker system prune -a

重新打包镜像,加上—no-cache

sudo docker build --no-cache -f Dockerfile -t invoke-aqm:1.0 .

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
要将Python项目打包Docker镜像,你可以按照以下步骤进行操作: 1. 确保系统已经安装了Docker。你可以在终端中运行 `docker -v` 命令来检查Docker是否已经安装并显示版本号。 2. 在项目根目录下创建一个名为 `Dockerfile` 的文件。Dockerfile 是用来定义Docker镜像构建过程的文本文件。 3. 在 Dockerfile 中编写构建镜像的指令。以下是一个示例的Dockerfile: ```Dockerfile # 使用一个基础镜像 FROM python:3.9 # 设置工作目录 WORKDIR /app # 复制项目文件到工作目录 COPY . /app # 安装项目依赖 RUN pip install -r requirements.txt # 设置环境变量 ENV PYTHONUNBUFFERED=1 # 运行应用 CMD ["python", "app.py"] ``` 这个示例中,我们使用了一个基于Python 3.9的官方镜像作为基础镜像。然后,我们设置了工作目录为 `/app`,将项目文件复制到工作目录中,安装了项目的依赖,设置了环境变量,并指定了启动应用的命令。 4. 确保项目根目录下存在一个名为 `requirements.txt` 的文件,其中含了项目的依赖列表。你可以使用 `pip freeze > requirements.txt` 命令来生成这个文件。 5. 在终端中,进入到 Dockerfile 所在的目录,并执行以下命令来构建镜像: ```shell docker build -t your-image-name . ``` 其中 `your-image-name` 是你为镜像起的名称,`.` 表示使用当前目录下的 Dockerfile。 6. 构建完成后,你可以通过以下命令来运行镜像并创建一个容器: ```shell docker run -d -p 8000:8000 your-image-name ``` 其中 `-d` 表示以后台模式运行容器,`-p 8000:8000` 表示将容器的 8000 端口映射到宿主机的 8000 端口,`your-image-name` 是你之前为镜像起的名称。 现在你的Python项目已经打包Docker镜像,并在容器中运行起来了。你可以通过访问 `http://localhost:8000` 来访问你的应用。 希望这些信息对你有帮助!如果你还有其他问题,请随提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mypage1228

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值