簡體   English   中英

帶有Python Web App的Docker容器-在主機(OSX)上連接到Postgres

[英]Docker container with Python Web App - Connect to Postgres on Host machine (OSX)

我可以連接到我本地的Postgres數據庫在我的web應用程序, 如果我運行一個泊塢窗容器內的Web應用程序。

  • 在Docker容器中運行的Web應用
  • 在主機上運行的Postgres

我不確定它是否與Postgres連接設置或Docker網絡設置有關。

遵循我的設置和命令:

主持人

  • OSX 10.11.6
  • PostgreSQL 9.6

Docker容器

  • Docker 1.13.1
  • Docker機器0.9.0
  • Docker容器操作系統:python:3.6.0-alpine
  • Python 3.6 + psycopg2 == 2.7

postgresql.conf

listen_addresses = '*'

pg_hba.conf

host    all             all             127.0.0.1/32            trust
host    all             all             0.0.0.0/0               trust
host    all             all             172.17.0.0/24           trust
host    all             all             192.168.99.0/24       trust

在HOST模式下使用Docker網絡

docker run -i --net=host -h 127.0.0.1 -e POSTGRES_URI=postgresql://127.0.0.1:5432/db my/image

錯誤:

無法連接到服務器:連接被拒絕
服務器是否在主機“ 127.0.0.1”上運行並在端口5432上接受TCP / IP連接?

在橋接模式下使用Docker網絡

docker run -i --add-host=dockerhost:`docker-machine ip ${DOCKER_MACHINE}` -e POSTGRES_URI=postgresql://dockerhost:5432/db -p 8000:8000 -p 5432:5432 my/image

錯誤:

服務器意外關閉了連接
這可能意味着服務器在處理請求之前或期間異常終止。

有任何想法嗎?

文檔中有關於此操作的說明

我想從容器連接到主機上的服務

Mac的IP地址正在更改(如果沒有網絡訪問權限,則沒有IP地址)。 我們當前的建議是將未使用的IP附加到Mac上的lo0接口。 例如: sudo ifconfig lo0 alias 10.200.10.1/24 ,並確保您的服務正在偵聽此地址或0.0.0.0 (即不是127.0.0.1 )。 然后,容器可以連接到該地址。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM