Docker:该命令返回一个非零代码:137

2022-01-14 00:00:00 python django pip docker dockerfile

问题描述

我的docker文件如下:

My docker file is as follows:

#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 steps in dockerfile till: RUN appmanage.py appconfig runs sucessfully as expected but after that i get the error:

The command '/bin/sh -c appmanage.py appconfig ' returned a non-zero code: 137

当我在谷歌上搜索错误时,我得到的建议是内存不足.但我已经验证,系统(centos)有足够的内存.

When i google for the error i get suggestions like memory is not sufficient. But i have verified, the system(centos) is having enough memory.

RUN appmanage.py appconfig执行时的命令行输出为:

The commandline output during the execution of RUN appmanage.py appconfig is :

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


解决方案

如前所述,RUN appmanage.py appconfig appAdd.json命令按预期运行成功,并报告System checkidentified没有问题(0 静音)..

As described, the command RUN appmanage.py appconfig appAdd.json run successfully as expected and reported that System check identified no issues (0 silenced)..

此外,命令坚持"杀死自己并返回退出代码 137.要使其工作的最小更改是将您的 Dockerfile 更新为类似于

Moreover, the command "insisted" on killing itself and return exit code of 137. The minimum changes for this to work is to update your Dockerfile to be like

...
#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
...

这将强制忽略上一个命令的返回退出代码并继续构建.

This will just forcefully ignore the return exit code from the previous command and carry on the build.

相关文章