将 hasura 连接到现有的 postgresql

connect hasura to existing postgresql

我可以使用默认设置通过 pgadmin(本地计算机)连接到 postgresql(本地计算机 WSL2) (本地主机:5432)

postgres.conf

listen_addresses = '*'
port = 5432

当我创建一个 docker 容器时,它不会连接到我的本地 postgresql。

WSL2 中使用的 cmd

docker run -d --net=host \
       -e HASURA_GRAPHQL_DATABASE_URL=postgres://postgres:password@localhost:5432/mydb \
       -e HASURA_GRAPHQL_ENABLE_CONSOLE=true \
       -e HASURA_GRAPHQL_DEV_MODE=true \
       hasura/graphql-engine:v1.3.3

错误

"could not connect to server: Connection refused\n\tIs the server running on host \"localhost\" (127.0.0.1) and accepting\n\tTCP/IP connections on port 5432?\n","path":"$","error":"connection error","code":"postgres-error"}

我错过了什么?

原来我不得不使用这个:

docker run -d -p 8080:8080 
-e HASURA_GRAPHQL_DATABASE_URL=postgres://postgres:password@host.docker.internal:5432/mydb \      
-e HASURA_GRAPHQL_ENABLE_CONSOLE=true  \
-e HASURA_GRAPHQL_DEV_MODE=true        \
hasura/graphql-engine:v1.3.3

我认为“host.docker.internal”只是对 Mac 的补充。似乎也适用于 Docker 桌面 Windows10(WSL2)。

这是一个对我有用的解决方案,重要的是主机名

version: "3.8"

services: 

postgres:
    restart: always
    image: postgres
    container_name: postgres
    hostname: postgres
    #depends_on:
        #sql-server:
            #condition: service_healthy
    volumes:
        - pg_data:/var/lib/postgresql/data
    environment:
        POSTGRES_USER: postgres
        POSTGRES_PASSWORD: postgrespassword

    networks:
        - backend

sql-api:
    restart: always
    container_name: api
    image: hasura/graphql-engine:v2.2.0
    ports:
        - 8055:8080
    depends_on:
        - "postgres"
    hostname: sqlapi
    environment:
        ## postgres database to store Hasura metadata
        HASURA_GRAPHQL_METADATA_DATABASE_URL: postgres://postgres:postgrespassword@postgres:5432/postgres
        ## enable the console served by server
        HASURA_GRAPHQL_ENABLE_CONSOLE: "true" # set to "false" to disable console
        ## enable debugging mode. It is recommended to disable this in production
        HASURA_GRAPHQL_DEV_MODE: "true"
        HASURA_GRAPHQL_ENABLED_LOG_TYPES: startup, http-log, webhook-log, websocket-log, query-log
        ## uncomment next line to set an admin secret
        # HASURA_GRAPHQL_ADMIN_SECRET: myadminsecretkey

    networks:
        - backend

网络: 后端: driver: 桥

卷: pg_data: