我正在从shell脚本在Docker容器中启动django tornado混合应用程序,并将--noinput
作为django命令的未识别参数:
usage: manage.py collectstatic [-h] [--version] [-v {0,1,2,3}]
[--settings SETTINGS] [--pythonpath PYTHONPATH]
[--traceback] [--no-color] [--noinput]
[--no-post-process] [-i PATTERN] [-n] [-c] [-l]
[--no-default-ignore]
manage.py collectstatic: error: unrecognized arguments: --noinput
为什么我会得到--noinput
作为无法识别的参数?我的Dockerfile调用了一个部署shell脚本,该脚本执行collectstatic
和{--noinput
参数,这两个参数都失败了。我尝试过删除无关的行,调整命令周围的空白,等等,但都没有用。我可以在本地运行shell脚本而不会出现任何问题;它似乎只是在调用shell脚本的Docker container RUN
调用中出现问题。在
Dockerfile文件:
^{pr2}$在部署.sh以下内容:
#!/bin/sh
python manage.py collectstatic --noinput
python manage.py migrate --noinput
python main.py
如果我用RUN python manage.py collectstatic --noinput
在Dockerfile中运行django命令,没有问题,但是我试图在CMD
调用中获取特定于应用程序的命令,因为我需要从Elastic Beanstalk为我的部署环境提供数据库环境变量。在
看来我的问题是shell脚本中的行尾。我认为sh正在将
noinput\R
输入python,因此它在终端中显示为看起来像noinput
,但实际上它得到了一个匹配的CR
字符。在当我在本地测试时,它是在Docker Quickstart终端(它工作的地方),Docker容器总是在Ubuntu中运行(它失败了)。在
我以前也遇到过这种情况,在Windows上编写的shell脚本中不同的行结尾会在Linux环境中造成混乱,我需要记住在编辑器中正确设置行结尾是多么重要。。。在
相关问题 更多 >
编程相关推荐