Começando com o Hyperf

Após conhecer e começar a estudar o Hyperf decidi documentar todos os passos que estava fazendo. Ao fazer isso eu acabo fixando mais sobre o assunto e depois posso compartilhar o que aprendi. Foi assim que pensei em escrever este artigo com base em minhas anotações.

Se quiser conhecer um pouco mais sobre o Hyperf

O meu objetivo foi criar um passo-a-passo para você iniciar seus estudos sobre o Hyperf o mais rápido possível. Para isso eu tinha alguns pontos que queria cobrir:

  • O único requirimento é ter o docker instalado.

  • Vontade de aprender.

Entendo que a maioria dos desenvolvedores hoje em dia já devem ter instalado o Docker em suas máquinas, então eu não irei cobrir essa parte.

Vamos lá?

Instalando p Hyperf

Crie um novo diretório em sua máquina e acesse ele:

mkdir hyperf
cd hyperf

Após isso execute o seguinte comando:

docker run --rm -u "$(id -u):$(id -g)" --interactive --tty \
  --volume $PWD:/app \
  composer create-project hyperf/hyperf-skeleton .

Algumas perguntas irão aparecer, por enquanto somente responda a de timezone e para o resto responda tudo com a letra n

What time zone do you want to setup ?
  [n] Default time zone for php.ini
Make your selection or type a time zone name, like Asia/Shanghai (n):
America/Sao_Paulo

  Do you want to use Database (MySQL Client) ?
  [y] yes
  [n] None of the above
  Make your selection or type a composer package name and version (yes): n

  Do you want to use Redis Client ?
  [y] yes
  [n] None of the above
  Make your selection or type a composer package name and version (yes): n

  Which RPC protocol do you want to use ?
  [1] JSON RPC with Service Governance
  [2] JSON RPC
  [3] gRPC
  [n] None of the above
  Make your selection or type a composer package name and version (n): n

  Which config center do you want to use ?
  [1] Apollo
  [2] Aliyun ACM
  [3] ETCD
  [4] Nacos
  [n] None of the above
  Make your selection or type a composer package name and version (n): n

  Do you want to use hyperf/constants component ?
  [y] yes
  [n] None of the above
  Make your selection (n): n

  Do you want to use hyperf/async-queue component ? (A simple redis queue component)
  [y] yes
  [n] None of the above
  Make your selection or type a composer package name and version (n): n

  Do you want to use hyperf/amqp component ?
  [y] yes
  [n] None of the above
  Make your selection or type a composer package name and version (n): n

  Do you want to use hyperf/model-cache component ?
  [y] yes
  [n] None of the above
  Make your selection or type a composer package name and version (n): n

  Do you want to use hyperf/elasticsearch component ?
  [y] yes
  [n] None of the above
  Make your selection or type a composer package name and version (n): n

  Do you want to use hyperf/tracer component ? (An open tracing protocol component, adapte with Zipkin etc.)
  [y] yes
  [n] None of the above
  Make your selection or type a composer package name and version (n): n

Ajustando o Dockerfile

No momento em que escrevo este artigo o Dockerfile vem com a imagem abaixo:

FROM hyperf/hyperf:8.1-alpine-v3.18-swoole-v5.0

Altere para a imagem abaixo:

FROM hyperf/hyperf:8.2-alpine-v3.18-swoole

Auto reload

Quando você executa o projeto, ele irá ficar em memória. Qualquer alteração que você faça em um arquivo somente irá refletir ao reiniciar sua aplicação.

Para resolver isso podemos utilizar uma ferramenta oferecida pelo próprio Hyperf, o watcher.

Para instalar o watcher execute o seguinte comando:

docker run --rm -u "$(id -u):$(id -g)" --interactive --tty \
  --volume $PWD:/app \
  composer require hyperf/watcher --dev

Vamos copiar o arquivo de configurações do pacote watcher para a pasta principal de sua aplicação. Para isso execute o seguinte comando:

cp ./vendor/hyperf/watcher/publish/watcher.php .watcher.php

Ainda faltam algumas configurações. Mas no que o watcher irá te ajudar? Simples, quando você alterar algum arquivo de sua aplicação ele irá automaticamente reiniciar a sua aplicação.

Configurando o docker-compose

Abra o arquivo docker-compose.yml que encontra-se na sua pasta principal da aplicação e troque todo o conteúdo para o seguinte:

version: '3'

services:
  hyperf-skeleton:
    container_name: hyperf-skeleton
    image: hyperf-skeleton
    build:
      context: .
    entrypoint: ["php", "bin/hyperf.php", "server:watch"]
    volumes:
      - ./:/opt/www
    ports:
      - 9501:9501
    environment:
      - APP_ENV=dev
      - SCAN_CACHEABLE=false

Agora é só iniciar sua aplicação com o comando:

docker-compose up

E agora é só acessar http://localhost:9501/

Resolvendo possíveis problemas

Eu testei estes passos em duas máquinas diferentes, ambas utilizando linux Mint.

Em uma delas precisei alterar no Dockerfile o seguinte trecho:

RUN composer install --no-dev -o && php bin/hyperf.php

Por:

RUN composer install --no-dev -o

Materiais complementares

Espero que tenha gostado deste artigo e caso tenha alguma dúvida, faça um comentário.