'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.
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
- Good discussion on GitHub
- Official guideline from Docker: Understand the risks of running out of memory.
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 |