Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
docker compose postgresql在python应用程序中的实现_Python_Postgresql_Url_Docker_Docker Compose - Fatal编程技术网

docker compose postgresql在python应用程序中的实现

docker compose postgresql在python应用程序中的实现,python,postgresql,url,docker,docker-compose,Python,Postgresql,Url,Docker,Docker Compose,我正在构建一个Python应用程序,并试图在Docker内部运行它。(我的作品完全是虚拟的,没有Docker。) 因此,我的应用程序由config.py文件和其他文件组成,这些文件可以让一切正常工作,但在本例中并不重要 我的配置文件如下所示: SQLALCHEMY_DATABASE_URI = "postgresql+psycopg2://gimtest:gimtest@localhost:5432/gimtest-users" version: '2' services: web:

我正在构建一个Python应用程序,并试图在Docker内部运行它。(我的作品完全是虚拟的,没有Docker。)

因此,我的应用程序由config.py文件和其他文件组成,这些文件可以让一切正常工作,但在本例中并不重要

我的配置文件如下所示:

SQLALCHEMY_DATABASE_URI = "postgresql+psycopg2://gimtest:gimtest@localhost:5432/gimtest-users"
version: '2'
services:
   web:
      build: ./web
      ports:
         - "5000:5000"
      depends_on:
         - postgres
      links:
         - postgres
         - elastic
      expose:
         - 5000
      command:
         "python run.py"
   postgres:
      image: postgres:9.5
      expose:
         - 5432
      environment:
         POSTGRES_USER: "gimtest"
         POSTGRES_PASSWORD: "gimtest"
         POSTGRES_DB: "gimtest-users"

   elastic:
      image: elasticsearch:2.3
应用程序要求在应用程序启动之前运行postgresql,所以我尝试使用Docker Compose。我的docker-compose.yml如下所示:

SQLALCHEMY_DATABASE_URI = "postgresql+psycopg2://gimtest:gimtest@localhost:5432/gimtest-users"
version: '2'
services:
   web:
      build: ./web
      ports:
         - "5000:5000"
      depends_on:
         - postgres
      links:
         - postgres
         - elastic
      expose:
         - 5000
      command:
         "python run.py"
   postgres:
      image: postgres:9.5
      expose:
         - 5432
      environment:
         POSTGRES_USER: "gimtest"
         POSTGRES_PASSWORD: "gimtest"
         POSTGRES_DB: "gimtest-users"

   elastic:
      image: elasticsearch:2.3
现在的问题是我无法连接到postgresql数据库。(至少compile是这么说的,因为它从python应用程序中抛出一个错误,即指定的url上没有运行postgresql(在config.py中)


如何修复url以使其正常工作?

如果您可以手动连接到postges db,然后尝试向您的应用程序添加延迟。我无法连接到docker postgres。我可以连接到单独的psql程序。延迟应根据定义进行修复。不过,感谢您的思考。
dependens\u on
将不会等到db更新它准备好了。看,如果数据库需要时间准备好,您需要添加一个手动延迟。另外,您的数据库连接应该是到
postgres
,而不是
localhost
好的,我现在明白了。我不明白连接到postgres而不是localhost的部分…那么URL应该是什么样子的?只需将
localhost
更改为
postgres
postgres是db容器的服务名或主机名。