我的docker文件如下:
#Use python 3.6 image
FROM python:3.6
ENV PYTHONUNBUFFERED 1
#install required packages
RUN apt-get update
RUN apt-get install libsasl2-dev libldap2-dev libssl-dev python3-dev psmisc -y
#install a pip package
#Note: This pip package has a completely configured django project in it
RUN pip install <pip-package>
#Run a script
#Note: Here appmanage.py is a file inside the pip installed location(site-packages), but it will be accessible directly without cd to the folder
RUN appmanage.py appconfig appadd.json
#The <pip-packge> installed comes with a built in django package, so running it with following CMD
#Note: Here manage.py is present inside the pip package folder but it is accesible directly
CMD ["manage.py","runserver","0.0.0.0:8000"]
当我跑步时:
sudo docker build -t test-app .
dockerfile中直到RUN appmanage.py appconfig
的步骤均按预期成功运行,但此后我得到错误:
The command '/bin/sh -c appmanage.py appconfig ' returned a non-zero code: 137
当我用Google搜索错误时,我得到诸如内存之类的建议是不够的。但是我已经证实,系统(centos)有足够的内存。
执行RUN appmanage.py appconfig
期间的命令行输出为:
Step 7/8 : RUN appmanage.py appconfig
---> Running in 23cffaacc81f
======================================================================================
configuring katana apps...
Please do not quit (or) kill the server manually, wait until the server closes itself...!
======================================================================================
Performing system checks...
System check identified no issues (0 silenced).
February 08, 2020 - 12:01:45
Django version 2.1.2, using settings 'katana.wui.settings'
Starting development server at http://127.0.0.1:9999/
Quit the server with CONTROL-C.
9999/tcp:
20Killed
答案 0 :(得分:1)
如前所述,命令RUN appmanage.py appconfig appAdd.json
按预期成功运行,并报告了System check identified no issues (0 silenced).
。
此外,该命令“杀死”自己并返回退出代码137。此操作的最小更改是将Dockerfile
更新为
...
#Run a script
#Note: Here appmanage.py is a file inside the pip installed location(site-packages), but it will be accessible directly without cd to the folder
RUN appmanage.py appconfig appAdd.json || true
...
这只会强制忽略上一条命令的返回退出代码并继续构建。