python - 无法将 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 映像中?
解决方案
因此,在您在服务器上手动添加库包后,要将所做的更改保存到 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
这会通过将所需的库添加到图像中来更新图像
推荐阅读
- python - 如何将一列添加到 python 数据框,即另一列的字符串操作?
- mql4 - 如何从 MQL4 中的 iCustom() 函数读取 iExposure 指标的利润值?
- c++ - Matlab s 函数,带有 char* argv[] 的遗留代码
- hadoop - 如何在直线 HQL 脚本中替换变量
- c# - AspNet Core Integration 测试,将参数传递给 WebApplicationFactory
- exiftool - 将文本文件转换为 GPS 轨迹文件
- c# - 带有正则表达式的子字符串
- mysql - 缩短mysql查询
- sql - TSQL:最大日期,但包括其他变量
- java - Maven:覆盖父 pom 以将映射添加到“rpm-maven-plugin”