'docker build failed after pip installed requirements with exit code 137

I am starting a new django project and want to dockerize the project, on my ubuntu. when I run docker-compose up --build I got a strange Error. It seems that it has problem with pip install requirements.

I have tried to search for the meaning of "exit code 137", most say it is "out of memory" but it doesn't seem like that in my case.

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:

when I run make up (I have a Makefile with up: docker-compose up --build), I got the following error message:

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

This problem is solved by RUN pip3 install --no-cache-dir -r requirements.txt



Solution 1:[1]

I was getting the below error on my windows machine:

Killed ERROR: Service 'kafka-asr' failed to build: The command '/bin/sh -c pip install --no-cache-dir -r requirements.txt' returned a non-zero code: 137

After increasing the docker memory the error got resolved.

  • Right click on docker -> setting -> Advance

I increased the memory 2304 to 2816 and clicked on Apply.

enter image description here

Solution 2:[2]

Adding the answer given at the end of the question:

This problem is solved by RUN pip3 install --no-cache-dir -r requirements.txt

Solution 3:[3]

Solution

Allocate more RAM to Docker (as @PravinKumar said above).

Here are screenshots of the settings screen for various Docker versions.

Reason

That code 137 error occurs on Linux/OS X and actually means Fatal error signal "9" (explanation here) that corresponds to Out Of Memory exception followed by SIGKILL signal killing the process.

Useful links

Solution 4:[4]

For me, the error got resolved after increasing the storage size instead of RAM size. FYI.

I used to get the below error.

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

In Mac, if you are using the latest docker version, please do the below.

Docker => Preferences... => Docker Engine => change the experimental feature like below. Here I have mentioned as 30GB you can increase based on your need.

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

Solution 5:[5]

I could not try this solution because of user privileges on the server host I'm using.

I'm not sure why, but using this version of docker compose

mkdir -p ~/.docker/cli-plugins/
curl -SL https://github.com/docker/compose/releases/download/v2.3.3/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
chmod +x ~/.docker/cli-plugins/docker-compose

helped with this issue. Now instead of using

docker-compose up --build

I used (without the dash in between docker and compose)

docker compose up --build

The caveats I noticed down the line, when rebuilding my images, new containers were not recreated using "docker compose up --build". I could now use "docker-compose up --build" without getting the code 137 error because the requirements where cached.

Solution 6:[6]

This error is solved with following changes in the Dockerfile:

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

COPY . /trkr-django

now the build is successful but I encountered a database connection error.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 David Thery
Solution 2
Solution 3 Alex Klaus
Solution 4 Buvan
Solution 5 kabz
Solution 6 Tracy chan