Búsqueda de sitios web

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.

  1. Ejecutándolo en una máquina virtual/host físico
  2. 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.

Artículos relacionados: