[英]flask app service can't connect to postgres service within docker-compose
[英]flask service cannot communicate with postgres via docker-compose
收到一個錯誤,提示它無法與我的 postgres 數據庫建立連接
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) could not connect to server: Connection refused
Is the server running on host "clean_life_database_1" (172.19.0.2) and accepting
TCP/IP connections on port 4444?
這是我的 docker-compose.yml
version: "3.8"
services:
web:
build: .
environment:
- POSTGRES_URI=postgresql://postgresuser123:mysecret@clean_life_database_1:4444
ports:
- 5000:5000
networks:
- db_new
database:
image: postgres
environment:
- POSTGRES_USER=postgresuser123
- POSTGRES_PASSWORD=mysecret
ports:
- 4444:5432
volumes:
- ./postgres-data:/var/lib/postgresql/data
networks:
- db_new
networks:
db_new:
driver: bridge
另外,項目所在的文件夾是 clean_life,所以當我檢查容器名稱時,它給了我 clean_life_database_1
為什么它以我的文件夾名稱為前綴,后綴為 1?
查看 compose 中的 on.networking文檔,您似乎應該將數據庫主機設置為database
(因為它是數據庫容器的名稱)。
您還設置了 a.network db_new
,它也可用於web
和database
服務以相互通信,但我會把它留給您。
因此,作為更新的撰寫文件,您應該擁有:
version: "3.8"
services:
web:
build: .
environment:
- POSTGRES_URI=postgresql://postgresuser123:mysecret@database:4444
ports:
- 5000:5000
networks:
- db_new
database:
image: postgres
environment:
- POSTGRES_USER=postgresuser123
- POSTGRES_PASSWORD=mysecret
ports:
- 4444:5432
volumes:
- ./postgres-data:/var/lib/postgresql/data
networks:
- db_new
networks:
db_new:
driver: bridge
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.