当我运行以下命令时,我希望退出代码为 0,因为我的combined容器运行了一个成功退出的测试,退出代码为 0。
docker-compose up --build --exit-code-from combined
Run Code Online (Sandbox Code Playgroud)
不幸的是,即使我的combined容器中的测试成功运行,我也始终收到 137 的退出代码,并且我以 0 的退出代码退出该容器(下面指定了有关如何发生的更多详细信息)。
以下是我的 docker-compose 版本:
docker-compose version 1.25.0, build 0a186604
Run Code Online (Sandbox Code Playgroud)
根据这篇文章,137 的退出代码可能是由于两个主要问题。
docker stop,应用程序没有正常处理 SIGTERM我知道 137 退出代码不是因为我的容器内存不足。当我运行时docker inspect <container-id>,我可以看到“OOMKilled”是假的,如下面的代码片段所示。我还为 Docker 引擎分配了 6GB 的内存,这对于我的应用程序来说已经足够了。
[
{
"Id": "db4a48c8e4bab69edff479b59d7697362762a8083db2b2088c58945fcb005625",
"Created": "2019-12-12T01:43:16.9813461Z",
"Path": "/scripts/init.sh",
"Args": [],
"State": {
"Status": "exited",
"Running": false,
"Paused": false,
"Restarting": false,
"OOMKilled": false, <---- shows container did not run out of memory
"Dead": …Run Code Online (Sandbox Code Playgroud)