我需要在我的docker映像中安装一个PIP库,并从同一个Dockerfile中运行它。
示例:
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"]运行此操作失败
/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中运行更新?
发布于 2022-10-11 20:36:15
您需要将要运行的命令放到像something.py这样的python脚本中。
你的something.py文件看起来
import eta3
...
...
...然后把最后一行改为,
CMD python /home/username/something.py根据您的注释,您可以对bash脚本执行相同的操作,并使用dockerfile中的CMD命令来运行它,如下所示。
您的脚本将具有您想要这样运行的命令。
#!/bin/bash
gunicorn -k uvicorn.workers.UvicornWorker -c gunicorn_conf.py 您可以将这一行添加到您的停靠文件中。
CMD /bash_script.shhttps://stackoverflow.com/questions/74033727
复制相似问题