Docker python:3.7-alpine3.8でpsycopg2のインストールに失敗する

Dockerpython:3.7-alpine3.8で、postgresqlのドライバpsycopg2をインストールする。

そのままでは失敗する。

# Dockerfileの抜粋
FROM python:3.7-alpine3.8
RUN pipenv install --system  # psycopg2がPipfileに記載されてる

$ docker build .
.. 略
Error: pg_config executable not found.
.. 略

のような文面が表示される。 調べてみたところ、pyscopg2 · Issue #1 · frol/docker-alpine-python3 · GitHub が参考になった。以下のようにすればいい。

# Dockerfileの抜粋
FROM python:3.7-alpine3.8
RUN apk update && \
    apk add postgresql-libs && \
    apk add --virtual .build-deps gcc musl-dev postgresql-dev && \
    pipenv install --system && \
    apk --purge del .build-deps

apk add --helpapk --help --verboseでヘルプを見れば大体の動作はわかるだろう。

  • 前半3行は、psycopg2のインストールの必要なものの準備。
  • 最後1行は、準備の使ったモジュールを削除。

    といった具合。クリーンに用意できるようだ。

コメント

タイトルとURLをコピーしました