簡體   English   中英

pip 安裝要求后 docker build 失敗,退出代碼為 137

[英]docker build failed after pip installed requirements with exit code 137

我正在啟動一個新的 django 項目,並希望在我的 ubuntu 上對項目進行 dockerize。 當我運行docker-compose up --build ,出現了一個奇怪的錯誤。 似乎 pip 安裝要求有問題。

我試圖搜索“退出代碼 137”的含義,大多數人說它是“內存不足”,但在我的情況下似乎並非如此。

Dockerfile:

FROM python:3.6
ENV PYTHONUNBUFFERED 1

RUN apt-get update && apt-get install apt-transport-https
RUN pip install --no-cache-dir pipenv

RUN mkdir /my-django
WORKDIR /my-django
ADD requirements.txt /my-django/

RUN pip install -r requirements.txt

docker-compose.yml:

version: '3'

services:
  db:
    image: postgres:11
    restart: unless-stopped
    volumes:
      - trkr-data:/var/lib/postgresql/data
    ports:
      - 11000:5432
    environment:
      - POSTGRES_DB='myDB'
      - POSTGRES_USER='myDB'
      - POSTGRES_PASSWORD='myDB'

  web:
    build: .
    restart: on-failure
    container_name: my-django
    image: trkr_web:latest
    volumes:
      - .:/my-django
    env_file:
      - ./.env
    command: python manage.py migrate && python manage.py runserver 0.0.0.0:8000
    ports:
      - "8000:8000"
    depends_on:
      - db

#sepcify volumes
volumes:
  my-data:

當我運行make up (我有一個 Makefile with up:docker-compose up --build),我收到以下錯誤消息:

......
Collecting Django==2.2.3 (from -r requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/39/b0/2138c31bf13e17afc32277239da53e9dfcce27bac8cb68cf1c0123f1fdf5/Django-2.2.3-py3-none-any.whl (7.5MB)
Collecting django-environ==0.4.5 (from -r requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/9f/32/76295a1a5d00bf556c495216581c6997e7fa5f533b2229e0a9d6cbaa95ae/django_environ-0.4.5-py2.py3-none-any.whl
Collecting pipenv==2018.10.13 (from -r requirements.txt (line 3))
  Downloading https://files.pythonhosted.org/packages/90/06/0008f53835495fbbf6e31ced9119b8f517e1271bdefcf0d04aaa9f28dbf4/pipenv-2018.10.13-py3-none-any.whl (5.2MB)
Collecting psycopg2-binary==2.7.5 (from -r requirements.txt (line 4))
  Downloading https://files.pythonhosted.org/packages/3f/4e/b9a5cb7c7451029f67f93426cbb5f5bebedc3f9a8b0a470de7d0d7883602/psycopg2_binary-2.7.5-cp36-cp36m-manylinux1_x86_64.whl (2.7MB)
Collecting pytz (from Django==2.2.3->-r requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/3d/73/fe30c2daaaa0713420d0382b16fbb761409f532c56bdcc514bf7b6262bb6/pytz-2019.1-py2.py3-none-any.whl (510kB)
Collecting sqlparse (from Django==2.2.3->-r requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/ef/53/900f7d2a54557c6a37886585a91336520e5539e3ae2423ff1102daf4f3a7/sqlparse-0.3.0-py2.py3-none-any.whl
Requirement already satisfied: pip>=9.0.1 in /usr/local/lib/python3.6/site-packages (from pipenv==2018.10.13->-r requirements.txt (line 3)) (18.1)
Requirement already satisfied: virtualenv in /usr/local/lib/python3.6/site-packages (from pipenv==2018.10.13->-r requirements.txt (line 3)) (16.7.2)
Requirement already satisfied: certifi in /usr/local/lib/python3.6/site-packages (from pipenv==2018.10.13->-r requirements.txt (line 3)) (2019.6.16)
Requirement already satisfied: virtualenv-clone>=0.2.5 in /usr/local/lib/python3.6/site-packages (from pipenv==2018.10.13->-r requirements.txt (line 3)) (0.5.3)
Requirement already satisfied: setuptools>=36.2.1 in /usr/local/lib/python3.6/site-packages (from pipenv==2018.10.13->-r requirements.txt (line 3)) (40.6.2)
Installing collected packages: pytz, sqlparse, Django, django-environ, pipenv, psycopg2-binary
  Found existing installation: pipenv 2018.11.26
    Uninstalling pipenv-2018.11.26:
      Successfully uninstalled pipenv-2018.11.26
Successfully installed Django-2.2.3 django-environ-0.4.5 pipenv-2018.10.13 psycopg2-binary-2.7.5 pytz-2019.1 sqlparse-0.3.0
Killed
ERROR: Service 'web' failed to build: The command '/bin/sh -c pip install -r requirements.txt' returned a non-zero code: 137
Makefile:2: recipe for target 'up' failed

這個問題通過RUN pip3 install --no-cache-dir -r requirements.txt

我在我的 Windows 機器上收到以下錯誤:

Killed ERROR: Service 'kafka-asr' failed to build: The command '/bin/sh -c pip install --no-cache-dir -r requirements.txt' 返回非零代碼:137

增加 docker 內存后,錯誤得到解決。

  • 右鍵單擊泊塢窗-> 設置-> 前進

我將內存 2304 增加到 2816,然后單擊“應用”。

在此處輸入圖片說明

解決方案

為 Docker 分配更多 RAM(如上面@PravinKumar 所說)。

以下是各種 Docker 版本的設置屏幕截圖

原因

code 137錯誤發生在Linux / OS X 上,實際上意味着Fatal error signal "9"此處解釋)對應於Out Of Memory異常,然后是 SIGKILL 信號終止進程。

有用的鏈接

添加在問題末尾給出的答案:

這個問題通過RUN pip3 install --no-cache-dir -r requirements.txt

對我來說,在增加存儲大小而不是 RAM 大小后,錯誤得到了解決。 供參考。

我曾經得到以下錯誤。

. . .
Killed
The command '/bin/sh -c pip install -r /tmp/requirements.txt' returned a non-zero code: 137

在 Mac 中,如果您使用的是最新的 docker 版本,請執行以下操作。

Docker => Preferences... => Docker Engine => 像下面這樣更改實驗功能。 在這里我提到了 30GB,您可以根據需要增加。

    {
      "experimental": false,
      "builder": {
        "gc": {
          "enabled": true,
          "defaultKeepStorage": "30GB"
        }
      },
      "features": {
        "buildkit": false
      }
    }

通過 Dockerfile 中的以下更改解決了此錯誤:

RUN pip install --upgrade pip; \
    pip install -r requirements.txt

COPY . /trkr-django

現在構建成功,但我遇到了數據庫連接錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM