Instale el motor Hasura GraphQL en Ubuntu 18.04/CentOS 7
Esta guía lo ayudará a configurar el motor Hasura GraphQL y la base de datos Postgres en Ubuntu 18.04/CentOS 7. Hasura GraphQL Engine es un servidor GraphQL de alto rendimiento que le permite configurar el servidor GraphQL y los activadores de eventos en una base de datos Postgres en muy poco tiempo. GraphQL Engine generará automáticamente un esquema GraphQL y procesará consultas, suscripciones y mutaciones de GraphQL.
Crear aplicaciones GraphQL o migrar a aplicaciones existentes a GraphQL respaldadas por Postgres será fácil con Hasura GraphQL Engine. Obtendrá API GraphQL instantáneas en tiempo real a través de Postgres.
Paso 1: Instale el servidor de base de datos PostgreSQL
Tiene dos opciones para ejecutar el servidor de base de datos PostgreSQL cuando trabaja con el motor Hasura GraphQL.
- Ejecutándolo en una máquina virtual/host físico
- Ejecutarlo dentro de un contenedor.
Recomiendo ejecutar su servidor de base de datos en el sistema host si no se siente cómodo con la administración de contenedores Docker. Siga nuestras guías a continuación para tener una instalación funcional de Postgres en Ubuntu 18.04/CentOS 7.
Cómo instalar PostgreSQL en CentOS 7
Instale PostgreSQL en Ubuntu 18.04/Ubuntu 16.04
Paso 2: instale Docker en Ubuntu 18.04/CentOS 7
Hasura GraphQL Engine se ejecutará en un contenedor Docker. Esto significa que necesita tener una instalación de Docker Engine en su sistema host. Las siguientes guías le serán útiles.
Cómo instalar Docker CE en Ubuntu/Debian/Fedora/Arch/CentOS
Una vez que Docker esté instalado, continúe con el paso 3.
Paso 3: Implemente Hasura GraphQL Engine en Ubuntu 18.04/CentOS 7
Descargue el script bash docker-run.sh
:
wget https://raw.githubusercontent.com/hasura/graphql-engine/master/install-manifests/docker-run/docker-run.sh
El script docker-run.sh
tiene un comando de ejecución de Docker de muestra. Se deben realizar los siguientes cambios en el comando:
- URL de la base de datos
- Configuración de red
URL de la base de datos
Edite el valor de la variable env HASURA_GRAPHQL_DATABASE_URL
para que pueda conectarse a su instancia de Postgres. Vea los ejemplos a continuación:
postgres://admin:password@localhost:5432/my-db
postgres://admin:@localhost:5432/my-db (if there is no password)
Ejemplos de HASURA_GRAPHQL_DATABASE_URL
:
postgres://admin:password@localhost:5432/my-db
postgres://admin:@localhost:5432/my-db
(si no hay contraseña)Configuración de red
Si su instancia de Postgres se ejecuta en localhost
se necesitarán los siguientes cambios en el comando dockerrun
para permitir que el contenedor Docker acceda a la red del host:
Agregue la marca --net=host
para acceder al servicio Postgres del host.
Así es como debería verse tu comando:
docker run -d --net=host \
-e HASURA_GRAPHQL_DATABASE_URL=postgres://username:password@hostname:port/dbname \
-e HASURA_GRAPHQL_ENABLE_CONSOLE=true \
hasura/graphql-engine:latest
Para comprobar si el contenedor está iniciado y ejecutándose, ejecute el comando docker ps
.
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5fa940fa91ad hasura/graphql-engine:v1.0.0-alpha40 "graphql-engine serve" 9 seconds ago Up 8 seconds nostalgic_hypatia
El servicio debe vincularse a la red host en el puerto 8080
.
~# ss -tunelp | grep 8080
tcp LISTEN 0 128 0.0.0.0:8080 0.0.0.0:* users:(("graphql-engine",pid=12999,fd=17)) ino:83522 sk:a <->
Acceda a la consola GraphQL en la IP del servidor y el puerto 8080.
Asegurar el punto final GraphQL
De forma predeterminada, la consola GraphQL es de acceso público. Para proteger el punto final GraphQL y la consola Hasura, debe configurar una clave secreta de administrador. El comando de ejecución de Docker se verá similar a lo siguiente.
docker run -d -p 8080:8080 \
-e HASURA_GRAPHQL_DATABASE_URL=postgres://username:password@hostname:port/dbname \
-e HASURA_GRAPHQL_ENABLE_CONSOLE=true \
-e HASURA_GRAPHQL_ADMIN_SECRET=myadminsecretkey \
hasura/graphql-engine:latest
Al acceder a la consola GraphQL, se le pedirá que proporcione el secreto de administrador.
Ejecutando Hasura GraphQL Engine y Postgres en Docker
Si necesita una configuración simple y rápida del entorno GraphQL, puede ejecutar Postgres y GraphQL en la ventana acoplable.
Paso 1: instalar Docker Compose
Consulte la última versión de Docker Compose en la página de versiones oficiales de Compose antes de descargarla. Al momento de escribir este artículo, la última versión es “1.23.2 ”.
export VER="1.23.2"
Descargue la última versión estable guardada en la variable VER
.
sudo curl -L "https://github.com/docker/compose/releases/download/${VER}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
El comando anterior guardará el archivo en /usr/local/bin/docker-compose
. Aplicar permisos ejecutables al binario:
sudo chmod +x /usr/local/bin/docker-compose
Muestra la versión de redacción de Docker.
$ docker-compose --version
docker-compose version 1.23.2, build 1110ad01
Establecer configurar la finalización de la línea de comandos de redacción
Compose tiene finalización de comandos para bash y zsh shell.
Para usuarios de Bash
Coloque el script de finalización en /etc/bash_completion.d
/.
sudo curl -L https://raw.githubusercontent.com/docker/compose/${VER}/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
Obtenga el archivo o vuelva a iniciar sesión para disfrutar de la función de finalización.
source /etc/bash_completion.d/docker-compose
Para usuarios de Zsh
Descargue el script de finalización en su ~/.zsh/completion/
mkdir -p ~/.zsh/completion
curl -L https://raw.githubusercontent.com/docker/compose/${VER}/contrib/completion/zsh/_docker-compose > ~/.zsh/completion/_docker-compose
Incluya el directorio en su $fpath
agregando ~/.zshrc
:
fpath=(~/.zsh/completion $fpath)
Asegúrate de que compinit
está cargado o hazlo agregando ~/.zshrc
:
autoload -Uz compinit && compinit -i
Luego recarga tu shell:
exec $SHELL -l
Paso 2: descargue el archivo Docker-Compose
Ejecute el siguiente comando para descargar el archivo de composición de Docker para Hasura.
mkdir graphql
cd graphql
wget https://raw.githubusercontent.com/hasura/graphql-engine/master/install-manifests/docker-compose/docker-compose.yaml
Puede editar la sección de entorno para agregar un secreto de administrador.
version: '3.6'
services:
postgres:
image: postgres
restart: always
volumes:
- db_data:/var/lib/postgresql/data
graphql-engine:
image: hasura/graphql-engine:v1.0.0-alpha40
ports:
- "8080:8080"
depends_on:
- "postgres"
restart: always
environment:
HASURA_GRAPHQL_DATABASE_URL: postgres://postgres:@postgres:5432/postgres
HASURA_GRAPHQL_ENABLE_CONSOLE: "true" # set to "false" to disable console
ASURA_GRAPHQL_ADMIN_SECRET: myadminsecretkey
volumes:
db_data:
Paso 3: Ejecute el motor Hasura GraphQL y Postgres
Comience a usar:
$ docker-compose up -d
.....
Creating graphql_postgres_1 … done
Creating graphql_graphql-engine_1 … done
Compruebe si los contenedores se están ejecutando:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ac0063626d8a hasura/graphql-engine:v1.0.0-alpha40 "graphql-engine serve" 3 minutes ago Up 3 minutes 0.0.0.0:8080->8080/tcp graphql_graphql-engine_1
2928f0f1537e postgres "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 5432/tcp graphql_postgres_1
Cuando se realiza un cambio en el archivo docker-compose, reinicie sus contenedores.
$ docker-compose restart
Restarting graphql_graphql-engine_1 … done
Restarting graphql_postgres_1 … done
Paso 4: Accede a la consola Hasura
Abra el puerto IP 8080 del servidor de la consola Hasura.
Ahora está listo para realizar su primera consulta Graphql o configurar su primer activador de evento. Obtenga más información en la documentación de Hasura GraphQL Engine.