Open rongcuid opened 2 years ago
Try
PG_DATABASE_URL: postgres://postgres:postgrespassword@postgres:5432/postgres
After that you need to manually track it
# Connect DB
curl -d '{
"type": "pg_add_source",
"args": {
"name": "postgres",
"configuration": {
"connection_info": {
"database_url": {
"from_env": "PG_DATABASE_URL"
},
"pool_settings": {
"retries": 1,
"idle_timeout": 180,
"max_connections": 50
}
}
}
}
}
' -H "Content-Type: application/json" \
-H "X-Hasura-Role: admin" \
-H "X-hasura-admin-secret: secret" \
-X POST http://hasura-url/v1/metadata
Is this second command documented anywhere? I didn't get this from the quick start documentation.
@rongcuid i was unfortunately not able to reproduce this. starting hasura with your configuration does start hasura with a default db connected. could you add any more details on your setup that might help reproduce this.
Unfortunately my full yml contains a private container, but I will put it down here anyways:
version: "3.6"
services:
postgres:
image: postgres:14
restart: always
volumes:
- db_data:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: postgrespassword
graphql-engine:
image: hasura/graphql-engine:v2.7.0.cli-migrations-v3
volumes:
- ./hasura/migrations:/hasura-migrations
- ./hasura/metadata:/hasura-metadata
ports:
- "8080:8080"
depends_on:
- "postgres"
restart: always
environment:
## postgres database to store Hasura metadata
# HASURA_GRAPHQL_METADATA_DATABASE_URL: postgres://postgres:postgrespassword@postgres:5432/postgres
## this env var can be used to add the above postgres database to Hasura as a data source. this can be removed/updated based on your needs
# PG_DATABASE_URL: postgres://postgres:postgrespassword@postgres:5432/postgres
HASURA_GRAPHQL_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
HASURA_GRAPHQL_NO_OF_RETRIES: 10
## 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
web:
# build: .
image: msccc
ports:
- "8000:8000"
depends_on:
- "postgres"
# - "graphql-engine"
# restart: on-failure
volumes:
db_data:
When Hasura starts, I navigate to the console and go to the data tab. No database is set up automatically. I tried setting HASURA_GRAPHQL_DATABASE_URL
and PG_DATABASE_URL
, but neither gives the default
connection. I also tested the "vanilla" image and the "migration" image, and neither sets up the connection automatically.
EDIT: metadata is set up correctly, however. It is just that there is no "Data" connection.
Right now I am working around by setting up migrations, which I need to do anyways. But I am glad to help fixing the original issue.
Thanks for the info. Could you also confirm what metadata you are mounting at - ./hasura/metadata:/hasura-metadata
. I am wondering if it is possible that an empty metadata might be getting applied as soon as the server starts which is clearing out the database connected by default. One way to test that hypothesis would be commenting out the following lines in your file and then checking if the default db is present
#volumes:
#- ./hasura/migrations:/hasura-migrations
#- ./hasura/metadata:/hasura-metadata
In fact, Hasura cannot start up at all if I mount an empty metadata directory. I have tried using the default (non-migration) image and without mounting the volumes. It gave the same behavior.
Version Information
Server Version: 2.7.0
Environment
Docker compose
What is the expected behaviour?
The following
docker-compose.yml
should give a running instance withdefault
database connection, but it does not.Keywords