Para instalar o Hasura, copie os dados da stack abaixo e faça as alterações de acordo com a sua realidade. Em caso de atualizações e melhorias, você pode retornar a esta página para conferir o código atualizado.

Deploy com utilizando Portas

Neste primeiro exemplo, você pode fazer o deploy do Hasura utilizando apenas as portas do serviço. Basta liberar a porta 8585 do navegador para a porta 8080 do container.

  1. Copie os dados da stack abaixo:
version: '3.8'

services:
  graphql_engine:
    image: hasura/graphql-engine:latest
    ports:
      - "8585:8080"
    environment:
      HASURA_GRAPHQL_DATABASE_URL: postgresql://postgres:[SENHA_AQUI]@[HOST]:5432/postgres
      HASURA_GRAPHQL_ENABLE_CONSOLE: "true"
      ## uncomment next line to set an admin secret
      # HASURA_GRAPHQL_ADMIN_SECRET: myadminsecretkey
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints:
          - node.role == manager
      resources:
        limits:
          cpus: '0.5'
          memory: 512M

Lembrando, estou usando este exemplo com um banco do Supabase. Se você criou um banco de dados seguindo o vídeo sobre banco de dados, você precisará adicionar a rede app_network a esta Stack para que o Hasura possa se conectar ao seu postgres.

Deploy com Traefik

Você pode fazer o deploy com o Traefik utilizando apenas a rede do Docker criada para interagir com o Traefik e definir um domínio com SSL.

  1. Copie os dados abaixo:
version: '3.8'

services:
  graphql_engine:
    image: hasura/graphql-engine:latest
    environment:
      HASURA_GRAPHQL_DATABASE_URL: postgresql://postgres:[SENHA_AQUI]@[HOST]:5432/postgres
      HASURA_GRAPHQL_ENABLE_CONSOLE: "true"
      ## uncomment next line to set an admin secret
      # HASURA_GRAPHQL_ADMIN_SECRET: myadminsecretkey
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints:
          - node.role == manager
      resources:
        limits:
          cpus: '0.5'
          memory: 512M
      labels:
        - traefik.enable=true
        #SSL
        - traefik.http.routers.graphql_engine.rule=Host(`graphql.SEU_DOMINIO.com.br`)
        - traefik.http.services.graphql_engine.loadbalancer.server.port=8080
        - traefik.http.routers.graphql_engine.service=graphql_engine
        - traefik.http.routers.graphql_engine.tls.certresolver=le
        - traefik.http.routers.graphql_engine.entrypoints=websecure
        - traefik.http.routers.graphql_engine.tls=true
    networks:
      - traefik_public

networks:
  traefik_public:
    external: true

Se estiver utilizando o Banco de dados Postgres com Docker, não se esqueça de adicionar na rede do mesmo, conforme no vídeo sobre banco de dados. Mais detalhes logo abaixo.

Detalhes Relevantes

Não se esqueça de substituir as informações do arquivo pelas suas próprias. Você pode colar diretamente no Portainer ou fazer o upload manualmente por linha de comando. Também é importante verificar os detalhes dessa estrutura, pois pode ser diferente no seu caso.

Não Encontrou o Banco?

Se você está utilizando nossa estrutura com docker, o banco ele foi criado em uma rede especifica. Adicione o Hasura na rede app_network para reconhecer seu banco postgres.

networks:
	- traefik_public
  - app_network

Depois declare a rede logo em seguida:

networks:
	traefik_public:
	  external: true
	app_network:
    external: true

Para mais informações veja o vídeo abaixo: