我有一个包含以下结尾的dockerfile
CMD python app/start.py arg1 arg2 arg3
当我尝试调用run
(通过撰写)时,它从我的python脚本中给出了一个错误:
Traceback (most recent call last):
File "app/start.py", line 4, in <module>
from utils.foo import bar
ImportError: No module named 'utils'
然而,当我调用run ... bash
(再次通过撰写)或将compose命令参数设置为bash
,然后在出现的bash终端中运行:
python app/start.py arg1 arg2 arg3
脚本运行完美。
我认为这与启动时如何处理文件夹结构有关。有什么我不明白CMD
如何在dockerfiles中工作?
更新
ENTRYPOINT
而不是CMD
投放没有任何区别CMD
设为bash -c "python app/start.py arg1 arg2 arg3"
没有任何区别答案 0 :(得分:0)
这绝对不是最好的解决方案,但它最终为我工作。
我只是创建了一个新的顶级文件start.py
:
from app.start import startup
startup()
并替换命令:
CMD python start.py arg1, arg2, arg3
它工作正常。我觉得这有点证实了我的怀疑,它与文件层次结构有关,但至于为什么只有在运行CMD
时才会发生这种情况仍然让我感到难过。任何有关更好解决方案的建议都会非常感激。