title: Docker pip dependencies installation error
body: <p>I'm trying to build a Docker image for a Flask app I wrote, but I'm getting a pip related error when it's installing the build dependencies as you can see from the log below.</p>
  
  <p>I'm using pipenv for dependency management, and I'm able to get the app running locally without any error using <code>pipenv run python3 run.py</code> </p>
  
  <p>It seems it's not able to install bcrypt, but I can't figure out why.</p>
  
  <p>Dockerfile:</p>
  
  <pre><code>FROM alpine:3.8
  
  RUN apk add --no-cache python3-dev &amp;&amp; pip3 install --upgrade pip
  WORKDIR /app
  COPY . /app
  RUN pip3 --no-cache-dir install -r requirements.txt
  EXPOSE 5000
  ENTRYPOINT ["python3"]
  CMD ["run.py"]
  </code></pre>
  
  <p>requirements.txt  (generated with pipenv shell; pip freeze > requirements.txt)</p>
  
  <pre><code>bcrypt==3.1.6
  blinker==1.4
  cffi==1.11.5
  Click==7.0
  Flask==1.0.2
  Flask-Bcrypt==0.7.1
  Flask-Login==0.4.1
  Flask-Mail==0.9.1
  Flask-SQLAlchemy==2.3.2
  Flask-WTF==0.14.2
  itsdangerous==1.1.0
  Jinja2==2.10
  MarkupSafe==1.1.0
  Pillow==5.4.1
  pycparser==2.19
  six==1.12.0
  SQLAlchemy==1.2.17
  Werkzeug==0.14.1
  WTForms==2.2.1
  </code></pre>
  
  <p>Docker build image process log:</p>
  
  <pre><code>$ docker build -t flaskapp:latest .
  Sending build context to Docker daemon   2.16MB
  Step 1/8 : FROM alpine:3.8
   ---&gt; 3f53bb00af94
  Step 2/8 : RUN apk add --no-cache python3-dev &amp;&amp; pip3 install --upgrade pip
   ---&gt; Using cache
   ---&gt; 3856c6d59bbe
  Step 3/8 : WORKDIR /app
   ---&gt; Using cache
   ---&gt; 54ed0e7464e4
  Step 4/8 : COPY . /app
   ---&gt; Using cache
   ---&gt; 9e045f4ce91c
  Step 5/8 : RUN pip3 --no-cache-dir install -r requirements.txt
   ---&gt; Running in 25909f37b071
  Collecting bcrypt==3.1.6 (from -r requirements.txt (line 1))
    Downloading https://files.pythonhosted.org/packages/ce/3a/3d540b9f5ee8d92ce757eebacf167b9deedb8e30aedec69a2a072b2399bb/bcrypt-3.1.6.tar.gz (42kB)
    Installing build dependencies: started
    Installing build dependencies: finished with status 'error'
    Complete output from command /usr/bin/python3.6 /usr/lib/python3.6/site-packages/pip install --ignore-installed --no-user --prefix /tmp/pip-build-env-9iojppec/overlay --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- setuptools wheel "cffi&gt;=1.1; python_implementation != 'PyPy'":
    Collecting setuptools
      Downloading https://files.pythonhosted.org/packages/bf/ae/a23db1762646069742cc21393833577d3fa438eecaa59d11fb04fa57fcd5/setuptools-40.7.1-py2.py3-none-any.whl (574kB)
    Collecting wheel
      Downloading https://files.pythonhosted.org/packages/ff/47/1dfa4795e24fd6f93d5d58602dd716c3f101cfd5a77cd9acbe519b44a0a9/wheel-0.32.3-py2.py3-none-any.whl
    Collecting cffi&gt;=1.1
      Downloading https://files.pythonhosted.org/packages/e7/a7/4cd50e57cc6f436f1cc3a7e8fa700ff9b8b4d471620629074913e3735fb2/cffi-1.11.5.tar.gz (438kB)
        Complete output from command python setup.py egg_info:
        Package libffi was not found in the pkg-config search path.
        Perhaps you should add the directory containing `libffi.pc'
        to the PKG_CONFIG_PATH environment variable
        Package 'libffi', required by 'virtual:world', not found
        Package libffi was not found in the pkg-config search path.
        Perhaps you should add the directory containing `libffi.pc'
        to the PKG_CONFIG_PATH environment variable
        Package 'libffi', required by 'virtual:world', not found
        Package libffi was not found in the pkg-config search path.
        Perhaps you should add the directory containing `libffi.pc'
        to the PKG_CONFIG_PATH environment variable
        Package 'libffi', required by 'virtual:world', not found
        Package libffi was not found in the pkg-config search path.
        Perhaps you should add the directory containing `libffi.pc'
        to the PKG_CONFIG_PATH environment variable
        Package 'libffi', required by 'virtual:world', not found
        Package libffi was not found in the pkg-config search path.
        Perhaps you should add the directory containing `libffi.pc'
        to the PKG_CONFIG_PATH environment variable
        Package 'libffi', required by 'virtual:world', not found
  
            No working compiler found, or bogus compiler options passed to
            the compiler from Python's standard "distutils" module.  See
            the error messages above.  Likely, the problem is not related
            to CFFI but generic to the setup.py of any Python package that
            tries to compile C code.  (Hints: on OS/X 10.8, for errors about
            -mno-fused-madd see http://stackoverflow.com/questions/22313407/
            Otherwise, see https://wiki.python.org/moin/CompLangPython or
  </code></pre>
  
  <p>EDIT:</p>
  
  <p>After changing the RUN command in Dockerfile to:</p>
  
  <pre><code>RUN apk add --no-cache python3-dev openssl-dev libffi-dev gcc musl-dev &amp;&amp; pip3 install --upgrade pip
  </code></pre>
  
  <p>I now get this error (relevant part posted):</p>
  
  <pre><code>...
  Collecting SQLAlchemy==1.2.17 (from -r requirements.txt (line 17))
  Downloading https://files.pythonhosted.org/packages/c6/52/73d1c92944cd294a5b165097038418abb6a235f5956d43d06f97254f73bf/SQLAlchemy-1.2.17.tar.gz (5.7MB)
  Collecting Werkzeug==0.14.1 (from -r requirements.txt (line 18))
  Downloading https://files.pythonhosted.org/packages/20/c4/12e3e56473e52375aa29c4764e70d1b8f3efa6682bef8d0aae04fe335243/Werkzeug-0.14.1-py2.py3-none-any.whl (322kB)
  Collecting WTForms==2.2.1 (from -r requirements.txt (line 19))
  Downloading https://files.pythonhosted.org/packages/9f/c8/dac5dce9908df1d9d48ec0e26e2a250839fa36ea2c602cc4f85ccfeb5c65/WTForms-2.2.1-py2.py3-none-any.whl (166kB)
  Exception:
  Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/pip/_internal/cli/base_command.py", line 176, in main
  status = self.run(options, args)
  File "/usr/lib/python3.6/site-packages/pip/_internal/commands/install.py", line 346, in run
  session=session, autobuilding=True
  File "/usr/lib/python3.6/site-packages/pip/_internal/wheel.py", line 886, in build
  assert have_directory_for_build
  AssertionError
  The command '/bin/sh -c pip3 --no-cache-dir install -r requirements.txt' returned a non-zero code: 2
  </code></pre>
  
  <p>EDIT2: </p>
  
  <p>It seems it's an Alpine Linux known issue. More info here: <a href="https://github.com/pypa/pip/issues/6197" rel="nofollow noreferrer">have_directory_for_build AssertionError when installing with --no-cache-dir (19.0.1)</a></p>