Installing psycopg2 in an alpine docker container

I am trying to get my django application to use PostgreSQL, however, so far no luck. I set the application to use the PostgreSQL database and linked both containers using docker-compose.yml, but I am getting the error that the module psycopg2 is missing. I installed all of the dependencies as follow: apk --update add python3-dev, postgresql-client, postgresql-dev, musl-dev and when I try to install psycopg2 using pip pip3 install psycopg2 I get the following error:

Collecting psycopg2
  Downloading psycopg2-2.6.2.tar.gz (376kB)
Installing collected packages: psycopg2
  Running setup.py install for psycopg2
    building 'psycopg2._psycopg' extension
    gcc -Wno-unused-result -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Os -fomit-frame-pointer -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.6.2 (dt dec pq3 ext lo64)" -DPG_VERSION_HEX=0x090409 -DHAVE_LO64=1 -I/usr/include/python3.4m -I. -I/usr/include -I/usr/include/postgresql/server -c psycopg/psycopgmodule.c -o build/temp.linux-x86_64-3.4/psycopg/psycopgmodule.o -Wdeclaration-after-statement
error: command 'gcc' failed with exit status 1
Complete output from command /usr/bin/python3.4 -c "import setuptools, tokenize;__file__='/tmp/pip-build-6wmwilb_/psycopg2/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-f8ye_ro8-record/install-record.txt --single-version-externally-managed --compile:
running install

running build

running build_py

creating build

creating build/lib.linux-x86_64-3.4

creating build/lib.linux-x86_64-3.4/psycopg2

copying lib/_json.py -> build/lib.linux-x86_64-3.4/psycopg2

copying lib/psycopg1.py -> build/lib.linux-x86_64-3.4/psycopg2

copying lib/pool.py -> build/lib.linux-x86_64-3.4/psycopg2

copying lib/__init__.py -> build/lib.linux-x86_64-3.4/psycopg2

copying lib/extensions.py -> build/lib.linux-x86_64-3.4/psycopg2

copying lib/errorcodes.py -> build/lib.linux-x86_64-3.4/psycopg2

copying lib/extras.py -> build/lib.linux-x86_64-3.4/psycopg2

copying lib/tz.py -> build/lib.linux-x86_64-3.4/psycopg2

copying lib/_range.py -> build/lib.linux-x86_64-3.4/psycopg2

creating build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_notify.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_lobject.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_errcodes.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/dbapi20.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/dbapi20_tpc.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_types_basic.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_dates.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_bugX000.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_copy.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_module.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_async.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/testutils.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/__init__.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_cancel.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_quote.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_psycopg2_dbapi20.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_with.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/testconfig.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_transaction.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_green.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_types_extras.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_cursor.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_connection.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_bug_gc.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

copying tests/test_extras_dictcursor.py -> build/lib.linux-x86_64-3.4/psycopg2/tests

Skipping implicit fixer: buffer

Skipping implicit fixer: idioms

Skipping implicit fixer: set_literal

Skipping implicit fixer: ws_comma

running build_ext

building 'psycopg2._psycopg' extension

creating build/temp.linux-x86_64-3.4

creating build/temp.linux-x86_64-3.4/psycopg

gcc -Wno-unused-result -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Os -fomit-frame-pointer -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.6.2 (dt dec pq3 ext lo64)" -DPG_VERSION_HEX=0x090409 -DHAVE_LO64=1 -I/usr/include/python3.4m -I. -I/usr/include -I/usr/include/postgresql/server -c psycopg/psycopgmodule.c -o build/temp.linux-x86_64-3.4/psycopg/psycopgmodule.o -Wdeclaration-after-statement

error: command 'gcc' failed with exit status 1

----------------------------------------
Command "/usr/bin/python3.4 -c "import setuptools, tokenize;__file__='/tmp/pip-build-6wmwilb_/psycopg2/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-f8ye_ro8-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-6wmwilb_/psycopg2

Am I missing a dependency or am I installing psycopg2 wrong?

  • The command '/bin/sh -c sudo pip3 install -r requirements.txt' returned a non-zero code: 1
  • Where is the download(curl/wget) package in docker container
  • maven builds fails inside ubuntu vagrant machine as well as docker instance
  • How do I provision a Dockerfile from Vagrant
  • Where does docker ps Command look for current containers?
  • Running RStudio Shiny as a Docker container on AWS?
  • CentOS 6 Docker 1.7 with error “panic: runtime error: invalid memory address or nil pointer dereference”
  • Piping stdout on windows to docker container running linux
  • Does capitrano conflict with docker?
  • CoreOS: dockerized mongo instance connection refused from another dockeried mongo
  • Is docker appropriate for fleets of embedded devices? [closed]
  • Deploying WAR file in Docker container
  • One Solution collect form web for “Installing psycopg2 in an alpine docker container”

    Add this in the Dockerfile of your django app

    RUN apk add build-base
    

    It is like build-essentials, include basic build tools for compiling C/C++
    programs

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.