web-dev-qa-db-ja.com

psycopg2がdockerイメージに接続できない

Dockerイメージを次のように開始しました。

docker run --name fnf-postgis -e POSTGRES_DB=fnf -e POSTGRES_USER=fnfuser -e POSTGRES_PASSWORD=fnf2pwd -p5432:5432 -d mdillon/postgis:11

そして、私は私のDjango db configを設定しました:

DATABASES = {
    'default': {
        'ENGINE': 'Django.contrib.gis.db.backends.postgis',
        'NAME': 'fnf',
        'USER': 'fnfuser',
        'PASSWORD': 'fnf2pwd',
        'Host': '',
        'port': 5432,

ただし、makemigrationsを実行すると、次のエラーが発生します。

psycopg2.OperationalError:サーバーに接続できませんでした:そのようなファイルまたはディレクトリはありませんサーバーはローカルで実行されており、Unixドメインソケット "/tmp/.s.PGSQL.5432"で接続を受け入れていますか?

pycharmからコンテナに正常に接続できます

enter image description here

13
Tjorriemorrie

Hostキーの値としてpostgresql Dockerコンテナの名前を指定する必要があります:

DATABASES = {
    'default': {
        'ENGINE': 'Django.contrib.gis.db.backends.postgis',
        'NAME': 'fnf',
        'USER': 'fnfuser',
        'PASSWORD': 'fnf2pwd',
        'Host': 'fnf-postgis', # Name of postgres docker container
        'PORT': 5432, # Its exposed port
    }
}
0
nrgx

PycharmとDjango設定には違いがあります。

Django設定が''に接続しようとすると、Pycharmは明示的にlocalhostに接続します。

Host Django設定は機能するはずです。)として'localhost'を置くだけです。

正しい設定名は大文字のHostPORTであり、小文字のHostportではないことに注意してください。

0
Tryph