[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
João Víctor Guedes Carrijo
Criador João Víctor Guedes Carrijo 07/08/2024

Olá,

 

Estou com um problema, talvez seja algo simples pois sou novo nessa área de docker e laravel...

Tentei configurar o ambiente laradock seguindo os seu passos de outros cursos para realizar este curso mas não consegui, então basicamente segui o passo-a-passo do setup-docker-laravel (https://github.com/especializati/setup-docker-laravel) pois este já tinha dado certo comigo em outros cursos, tudo estava ocorrendo bem até está aula "Aula 02 - Middleware Tenant no Laravel", no phpmyadmin tentei incluir o seguinte:

name: delivery

domain: 127.0.0.1:8989

bd_database: curso_laravel_mult_tenancy_01

bd_host: mysql

bd_username: root

bd_password: root

 

Após incluir, ao atualizar o localhost:8989, ocorreu o seguinte erro:

SQLSTATE[HY000] [2002] Connection refused (Connection: mysql, SQL: select * from `companies` where `domain` = localhost limit 1)

Antes havia tentando inserir os mesmos dados que você inseriu, e o dd retornou apenas null.

Aqui está parte do meu arquivo .env:

 

APP_NAME="Laravel Multi Tenancy Multi Database"

APP_ENV=local

APP_DEBUG=true

APP_URL=http://localhost:8989

 

DB_CONNECTION=mysql

DB_HOST=db

DB_PORT=3306

DB_DATABASE=laravel

DB_USERNAME=root

DB_PASSWORD=root

 

Caso quiser ver meu código, aqui está meu repositório: https://github.com/JaoJaoGo/laravel-multi-tenancy

 
Manager Carlos Ferreira 07/08/2024

Olá, João Víctor!

Tudo bem?

 

Entendi o seu caso.

 

Como está identificando o tenant a partir do domínio, vc precisa criar no seu arquivo de hosts os virtualhost que aponta para 127.0.0.1

 

Qual o seu sistema operacional?

No Mac e no Linux fica em /etc/hosts

 

127.0.0.1 domain01.dev

127.0.0.1 domain02.dev

 

Outra alteração importante, pode usar estes mesmo setup, mas precisa rodar na porta 80, mude no docker-compose.yaml e tente novamente.

Carlos Ferreira
Criador João Víctor Guedes Carrijo 07/08/2024

Deu certo!

 

Acabou que o erro foi do fato da porta não ser 80 mesmo, obrigado!

 

Uma última dúvida do ticket também relacioado aos middlewares...

No seu arquivo web.php, está assim:

 

Route::get('/', function () {

     return view('welcome');

});

 

Porém o meu não se comporta do mesmo jeito (não executa o TenantMiddleware.php). Para consertar isso, eu fiz dessa maneira:


Route::get('/', function () {

     return view('welcome');

})->middleware(\App\Http\Middleware\Tenant\TenantMiddleware::class);


Por que isso ocorre?

João Víctor Guedes Carrijo
Manager Carlos Ferreira 07/08/2024

Show, que bom que deu certo!

 

Isso é por conta da versão do Laravel, na versão 11, precisa registrar em bootstrap/app.php no ->withMiddleware():

https://laravel.com/docs/11.x/middleware#global-middleware

Carlos Ferreira
Criador João Víctor Guedes Carrijo 07/08/2024

Entendi, obrigado!

João Víctor Guedes Carrijo
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!