首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在映像构建过程中在同一个Dockerfile中运行PIP安装库

在映像构建过程中在同一个Dockerfile中运行PIP安装库
EN

Stack Overflow用户
提问于 2022-10-11 20:24:44
回答 1查看 27关注 0票数 1

我需要在我的docker映像中安装一个PIP库,并从同一个Dockerfile中运行它。

示例:

代码语言:javascript
复制
from python

COPY requirements.txt /app/requirements.txt
RUN pip3 install -U -r ete3

RUN 'python3 -c "from ete3 import NCBITaxa;NCBITaxa();"'


CMD ["gunicorn", "-k", "uvicorn.workers.UvicornWorker", "-c", "gunicorn_conf.py", "api.main:app"]

运行此操作失败

代码语言:javascript
复制
/bin/sh: 1: python3 -c "import ete3": not found
The command '/bin/sh -c 'python3 -c "from ete3 import NCBITaxa;NCBITaxa();"'' returned a non-zero code: 127

但是,如果我删除了RUN指令,完成构建,附加到正在运行的容器python3 -c "from ete3 import NCBITaxa;NCBITaxa();"就可以了。

我猜想既然它的pip安装到/usr/local/lib/python3.8/dist-packages/ete3中,那么它应该在PYTHONPATH中吗?还是因为这是在映像构建时,系统还没有可用呢?有什么诡计吗?

我需要这个功能来在构建时将一些NCBI数据库更新到映像中,这样这个ete3库就是up2date来进行部署。ete3会在运行时提取文件,这既慢又糟糕。

另一种选择可以是使用从Dockerfile1安装的PIP库预构建映像,并在Dockerfile2中运行更新?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-11 20:36:15

您需要将要运行的命令放到像something.py这样的python脚本中。

你的something.py文件看起来

代码语言:javascript
复制
import eta3
...
...
...

然后把最后一行改为,

代码语言:javascript
复制
CMD python /home/username/something.py

根据您的注释,您可以对bash脚本执行相同的操作,并使用dockerfile中的CMD命令来运行它,如下所示。

您的脚本将具有您想要这样运行的命令。

代码语言:javascript
复制
#!/bin/bash
gunicorn -k uvicorn.workers.UvicornWorker -c gunicorn_conf.py 

您可以将这一行添加到您的停靠文件中。

代码语言:javascript
复制
CMD /bash_script.sh
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74033727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档