簡體   English   中英

flask 服務無法通過 docker-compose 與 postgres 通信

[英]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 ,它也可用於webdatabase服務以相互通信,但我會把它留給您。

因此,作為更新的撰寫文件,您應該擁有:

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.

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