【发布时间】:2016-11-20 07:38:16
【问题描述】:
我正在通过 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 和 migrate 命令(都带有 --noinput 参数,这对两者都失败了。我已经尝试过删除无关的行,调整命令周围的空格等, 无济于事。我可以在本地运行 shell 脚本没有任何问题;这似乎只是 Docker 容器 RUN 调用 shell 脚本中的问题。
Dockerfile:
FROM python:2.7
RUN apt-get update
RUN apt-get install -y build-essential
RUN apt-get install -y python-dev
RUN apt-get install -y libmysqlclient-dev
RUN mkdir /code
ADD . /code/
WORKDIR /code
RUN pip install -r requirements.txt
CMD ["sh","./deploy.sh"]
EXPOSE 8888
部署.sh:
#!/bin/sh
python manage.py collectstatic --noinput
python manage.py migrate --noinput
python main.py
如果我在 Dockerfile 中使用 RUN python manage.py collectstatic --noinput 运行 django 命令,则没有问题,但我正在尝试在 CMD 调用中获取特定于应用程序的命令,因为我需要来自 Elastic 的数据库环境变量Beanstalk 用于我的部署环境。
【问题讨论】: