Wil*_*l S 6 python django docker
我正在努力从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
Run Code Online (Sandbox Code Playgroud)
为什么我会--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
Run Code Online (Sandbox Code Playgroud)
deploy.sh:
#!/bin/sh
python manage.py collectstatic --noinput
python manage.py migrate --noinput
python main.py
Run Code Online (Sandbox Code Playgroud)
如果我在Dockerfile中运行django命令RUN python manage.py collectstatic --noinput没有问题,但我正在尝试在CMD调用中获取特定于应用程序的命令,因为我需要从Elastic Beanstalk获取数据库环境变量用于我的部署环境.
看起来我的问题是shell脚本中的行结尾.我认为sh正在--noinput\R进入python,所以它在终端中呈现出来的样子--noinput,但实际上它正在获得一个CR与之相匹配的角色.
当我在本地测试时,它位于Docker Quickstart终端(它工作的地方),而Docker容器总是在Ubuntu中运行(它失败了).
我之前就已经这样了,之前在Windows上编写的shell脚本中的不同行结尾在Linux环境中搞砸了,我需要记住在我的编辑器中正确设置行结尾的重要性. .
| 归档时间: |
|
| 查看次数: |
1104 次 |
| 最近记录: |