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からコンテナに正常に接続できます
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
}
}
PycharmとDjango設定には違いがあります。
Django設定が''
に接続しようとすると、Pycharmは明示的にlocalhost
に接続します。
Host
Django設定は機能するはずです。)として'localhost'
を置くだけです。
正しい設定名は大文字のHost
とPORT
であり、小文字のHost
とport
ではないことに注意してください。