首页 > 解决方案 > 无法将 python lib 添加到 Ubuntu 服务器上的现有 Docker 映像

问题描述

美好的一天,我正在尝试在 AWS Ubuntu 服务器上部署 Telegram 机器人。但我无法运行应用程序,因为服务器说(当我运行 docker-compose up 时):

there is no name: asyncpg

但是我通过在服务器上手动安装它

 pip3 install asyncpg 

后来我检查了它是否在“包”文件夹中。

但是,我有点理解问题出在哪里。当我第一次调

sudo docker-compose up

它使用了这个文件:

我的 Dockerfile:

FROM python:3.8


WORKDIR /src
COPY requirements.txt /src
RUN pip install -r requirements.txt
COPY . /src

requirements.txt 缺少这个库的地方。我编辑了需求

nano 

并尝试运行:

docker-compose up 

再次,但我再次遇到类似的问题

there is no asyncpg package

所以据我了解 docker-compose up 使用已经创建的图像,其中没有这样的包。我尝试了 SOF 的不同解决方案,例如 build 和 > freeze,但没有任何帮助。可能是因为我不太明白我在做什么,我是编程和 python 的初学者。

如何将此包添加到现有的 docker 映像中?

标签: pythondockerubuntu

解决方案


因此,在您在服务器上手动添加库包后,要将所做的更改保存到 docker 映像中,您需要使用以下命令提交正在运行的 docker 容器,

docker commit <container-id> <image-name>


让我们举个例子。你有一个图像,application

您运行 docker 映像并返回 container-id say 1b390cd1dc2d

现在,您可以使用以下命令进入正在运行的容器 - docker exec -it 1b390cd1dc2d /bin/bash

接下来,安装软件包 - pip3 install asyncpg

现在退出正在运行的容器exit

使用共享的第一个命令来更新图像,如下所示

docker commit 1b390cd1dc2d application

这会通过将所需的库添加到图像中来更新图像


推荐阅读