Docker Compose on Crunchy Postgres 和 Hasura Graphql Engine - 数据库 URL 设置
Docker Compose on Crunchy Postgres and Hasura Graphql Engine - Database URL settings
如果问题不清楚或没有足够的信息,请告诉我,因为我已尽力根据我的理解提出我的问题...
我正在尝试使用 Hasura GraphQL 引擎配置 Crunchy Postgres 图像,我尝试按照文档的建议更改主机名,但它根本没有连接到我的 Crunchy Postgres 图像。
文档链接:
https://docs.hasura.io/1.0/graphql/manual/deployment/docker/index.html
https://hub.docker.com/r/crunchydata/crunchy-postgres/
我的Docker-撰写文件:
version: '3.5'
services:
unipgdb:
image: crunchydata/crunchy-postgres:centos7-11.1-2.3.0
restart: always
ports:
- "5432:5432"
env_file:
- ./config/postgres/cpg-env.list
volumes:
- unipgdata_volume:/var/lib/postgresql/data
networks:
- unicausalapi
graphql-engine:
image: hasura/graphql-engine:v1.0.0-alpha37
ports:
- "8080:80"
depends_on:
- "unipgdb"
restart: always
environment:
HASURA_GRAPHQL_DATABASE_URL: postgres://user:password@postgres:5432/unipgdb
HASURA_GRAPHQL_ENABLE_CONSOLE: "true" # set to "false" to disable console
## uncomment next line to set an access key
# HASURA_GRAPHQL_ACCESS_KEY: mysecretaccesskey
networks:
- unicausalapi
# For Hasura engine
caddyhasura:
build:
context: .
dockerfile: caddyhasura-Dockerfile
depends_on:
- graphql-engine
networks:
- unicausalapi
- unicausalpublic
- unicausalnetwork
volumes:
static_volume: # <-- declare the static volume
media_volume: # <-- declare the media volume
unipgdata_volume:
external: true
networks:
unicausalpublic:
external: true
unicausalnetwork:
external: true
unicausalapi:
external: true
在caddyhasura服务的Caddyfile中,它只是容器graphql-engine上的一个反向代理,所以应该不会影响我的问题。
我认为我使用主机名配置 HASURA_GRAPHQL_DATABASE_URL 不正确,因为我不确定使用 crunchy-postgres:centos7 图像应该放什么。
我在 Docker 日志中收到此错误
如何配置它以使用我的 docker-compose 文件使用这些图像?
HASURA_GRAPHQL_DATABASE_URL: postgres://user:password@postgres:5432/unipgdb
有什么想法可以尝试解决我的问题吗?提前致谢。
由于 Crunchy Postgres 容器的名称是 unipgdb
,因此容器的主机名将相同。而不是 postgres
作为主机名,你应该使用它。
因此,您的数据库 url 将变为
HASURA_GRAPHQL_DATABASE_URL: postgres://user:password@unipgdb:5432/unipgdb
如果您的用户名或密码包含特殊字符(如 $、#、@ 等),请确保您 URL 对它们进行编码并在 URL 中使用它们。参考:https://www.degraeve.com/reference/urlencoding.php
例如如果密码是secretPassW$or#
,应该输入secretPassW%24or%23
如果问题不清楚或没有足够的信息,请告诉我,因为我已尽力根据我的理解提出我的问题...
我正在尝试使用 Hasura GraphQL 引擎配置 Crunchy Postgres 图像,我尝试按照文档的建议更改主机名,但它根本没有连接到我的 Crunchy Postgres 图像。
文档链接:
https://docs.hasura.io/1.0/graphql/manual/deployment/docker/index.html
https://hub.docker.com/r/crunchydata/crunchy-postgres/
我的Docker-撰写文件:
version: '3.5'
services:
unipgdb:
image: crunchydata/crunchy-postgres:centos7-11.1-2.3.0
restart: always
ports:
- "5432:5432"
env_file:
- ./config/postgres/cpg-env.list
volumes:
- unipgdata_volume:/var/lib/postgresql/data
networks:
- unicausalapi
graphql-engine:
image: hasura/graphql-engine:v1.0.0-alpha37
ports:
- "8080:80"
depends_on:
- "unipgdb"
restart: always
environment:
HASURA_GRAPHQL_DATABASE_URL: postgres://user:password@postgres:5432/unipgdb
HASURA_GRAPHQL_ENABLE_CONSOLE: "true" # set to "false" to disable console
## uncomment next line to set an access key
# HASURA_GRAPHQL_ACCESS_KEY: mysecretaccesskey
networks:
- unicausalapi
# For Hasura engine
caddyhasura:
build:
context: .
dockerfile: caddyhasura-Dockerfile
depends_on:
- graphql-engine
networks:
- unicausalapi
- unicausalpublic
- unicausalnetwork
volumes:
static_volume: # <-- declare the static volume
media_volume: # <-- declare the media volume
unipgdata_volume:
external: true
networks:
unicausalpublic:
external: true
unicausalnetwork:
external: true
unicausalapi:
external: true
在caddyhasura服务的Caddyfile中,它只是容器graphql-engine上的一个反向代理,所以应该不会影响我的问题。
我认为我使用主机名配置 HASURA_GRAPHQL_DATABASE_URL 不正确,因为我不确定使用 crunchy-postgres:centos7 图像应该放什么。
我在 Docker 日志中收到此错误
如何配置它以使用我的 docker-compose 文件使用这些图像?
HASURA_GRAPHQL_DATABASE_URL: postgres://user:password@postgres:5432/unipgdb
有什么想法可以尝试解决我的问题吗?提前致谢。
由于 Crunchy Postgres 容器的名称是 unipgdb
,因此容器的主机名将相同。而不是 postgres
作为主机名,你应该使用它。
因此,您的数据库 url 将变为
HASURA_GRAPHQL_DATABASE_URL: postgres://user:password@unipgdb:5432/unipgdb
如果您的用户名或密码包含特殊字符(如 $、#、@ 等),请确保您 URL 对它们进行编码并在 URL 中使用它们。参考:https://www.degraeve.com/reference/urlencoding.php
例如如果密码是secretPassW$or#
,应该输入secretPassW%24or%23