[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Diego Arend
Criador Diego Arend 06/07/2023

Boa noite.

Estou utilizando a branch Laravel10+Php8.1+Docker do repositório da EspecializaTi para fazer este curso.
Porém após efetuar os passos existentes no readme da branch, não consigo fazer o Laravel conectar ao container do MySql.
Não consigo rodar a migrate para inciar a aplicação.
O Erro informado ao tentar executar a migrate é:

  Illuminate\Database\QueryException 

SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for mysql failed: Temporary failure in name resolution (Connection: mysql, SQL: select * from information_schema.tables where table_schema = multidb and table_name = migrations and table_type = 'BASE TABLE')

  at vendor/laravel/framework/src/Illuminate/Database/Connection.php:795

    791▕         // If an exception occurs when attempting to run a query, we'll format the error

    792▕         // message to include the bindings with SQL, which will make this exception a

    793▕         // lot more helpful to the developer instead of just the database's errors.

    794▕         catch (Exception $e) {

  ➜ 795▕             throw new QueryException(

    796▕                 $this->getName(), $query, $this->prepareBindings($bindings), $e

    797▕             );

    798▕         }

    799▕     }

      +38 vendor frames 

39  artisan:37     
Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))

Criador Diego Arend 06/07/2023

Detalhe.
Consigo acessar o container do mysql através de um cliente MySql externo(DBeaver) através do localhost:388
Segue o env utilizado:

APP_NAME=EspecializaTi
APP_ENV=local
APP_KEY=base64:iz8z/pl9wxu9pt1wxDbz76mHIc0p1ksChd2N06PUINo=
APP_DEBUG=true
APP_URL=http://localhost:8989

LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=multidb
DB_USERNAME=root
DB_PASSWORD=root

BROADCAST_DRIVER=log
CACHE_DRIVER=redis
FILESYSTEM_DISK=local
QUEUE_CONNECTION=redis
SESSION_DRIVER=redis
SESSION_LIFETIME=120

MEMCACHED_HOST=127.0.0.1

REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_MAILER=smtp
MAIL_HOST=mailpit
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="[email protected]"
MAIL_FROM_NAME="${APP_NAME}"

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_HOST=
PUSHER_PORT=443
PUSHER_SCHEME=https
PUSHER_APP_CLUSTER=mt1

VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
VITE_PUSHER_HOST="${PUSHER_HOST}"
VITE_PUSHER_PORT="${PUSHER_PORT}"
VITE_PUSHER_SCHEME="${PUSHER_SCHEME}"
VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

 

Diego Arend
Criador Diego Arend 06/07/2023

O docker-compose.yaml(padrão do repositório) da EspecializaTi

version: "3.7"

services:
# image project
app:
build:
context: .
dockerfile: Dockerfile
restart: unless-stopped
working_dir: /var/www/
volumes:
- ./:/var/www
depends_on:
- redis
networks:
- laravel

# nginx
nginx:
image: nginx:alpine
restart: unless-stopped
ports:
- "8989:80"
volumes:
- ./:/var/www
- ./docker/nginx/:/etc/nginx/conf.d/
networks:
- laravel

# db mysql
db:
image: mysql:5.7.22
restart: unless-stopped
environment:
MYSQL_DATABASE: ${DB_DATABASE:-laravel}
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD:-root}
MYSQL_PASSWORD: ${DB_PASSWORD:-userpass}
MYSQL_USER: ${DB_USERNAME:-username}
volumes:
- ./.docker/mysql/dbdata:/var/lib/mysql
ports:
- "3388:3306"
networks:
- laravel

# queue
queue:
image: especializati/laravel9-app
restart: unless-stopped
command: "php artisan queue:work"
volumes:
- ./:/var/www
depends_on:
- redis
- app
networks:
- laravel

# redis
redis:
image: redis:latest
networks:
- laravel

networks:
laravel:
driver: bridge
Diego Arend
Manager Carlos Ferreira 06/07/2023

Olá, Diego!
Tudo bem?

No seu arquivo .env, está com o nome do container (db) do container de banco de dados?

Está rodando esse comando dentro do container app?
docker compose exec app bash
php artisan migrate

Carlos Ferreira
Criador Diego Arend 06/07/2023

Olá Carlos.
Estou utilizando as configurações indicadas no repositório https://github.com/especializati/setup-docker-laravel/tree/laravel-10-com-php-8.1

Configuração do coker-composer

# db mysql
db:
image: mysql:5.7.22
restart: unless-stopped
environment:
MYSQL_DATABASE: ${DB_DATABASE:-laravel}
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD:-root}
MYSQL_PASSWORD: ${DB_PASSWORD:-userpass}
MYSQL_USER: ${DB_USERNAME:-username}
volumes:
- ./.docker/mysql/dbdata:/var/lib/mysql
ports:
- "3388:3306"
networks:
- laravel


Configurações do .env

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=multidb
DB_USERNAME=root
DB_PASSWORD=root
Diego Arend
Criador Diego Arend 06/07/2023

Olá Carlos.
Estou utilizando as configurações indicadas no repositório https://github.com/especializati/setup-docker-laravel/tree/laravel-10-com-php-8.1

Configuração do coker-composer

# db mysql
db:
image: mysql:5.7.22
restart: unless-stopped
environment:
MYSQL_DATABASE: ${DB_DATABASE:-laravel}
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD:-root}
MYSQL_PASSWORD: ${DB_PASSWORD:-userpass}
MYSQL_USER: ${DB_USERNAME:-username}
volumes:
- ./.docker/mysql/dbdata:/var/lib/mysql
ports:
- "3388:3306"
networks:
- laravel


Configurações do .env

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=multidb
DB_USERNAME=root
DB_PASSWORD=root
Diego Arend
Criador Diego Arend 06/07/2023

Comando da migrate exewcutado dentro do container app, conforme indicação no repositório.
Segue cópia do terminal:


user@user-desk:~/Documents/projetos/app-laravel$ docker-compose up -d

Creating network "app-laravel_laravel" with driver "bridge"

Creating app-laravel_redis_1 ... done

Creating app-laravel_nginx_1 ... done

Creating app-laravel_db_1    ... done

Creating app-laravel_app_1   ... done

Creating app-laravel_queue_1 ... done

user@user-desk:~/Documents/projetos/app-laravel$ docker-compose exec app bash

carlos@5816691a9739:/var/www$ php artisan migrate

 

   Illuminate\Database\QueryException 

 

  SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for mysql failed: Temporary failure in name resolution (Connection: mysql, SQL: select * from information_schema.tables where table_schema = multidb and table_name = migrations and table_type = 'BASE TABLE')

 

  at vendor/laravel/framework/src/Illuminate/Database/Connection.php:795

    791▕         // If an exception occurs when attempting to run a query, we'll format the error

    792▕         // message to include the bindings with SQL, which will make this exception a

    793▕         // lot more helpful to the developer instead of just the database's errors.

    794▕         catch (Exception $e) {

  ➜ 795▕             throw new QueryException(

    796▕                 $this->getName(), $query, $this->prepareBindings($bindings), $e

    797▕             );

    798▕         }

    799▕     }

 

      +38 vendor frames 

 

  39  artisan:37

      Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))

Diego Arend
Manager Carlos Ferreira 06/07/2023

O nome do container que está rodando o banco de dados é db, por isso o erro. DB_HOST=db

Carlos Ferreira
Criador Diego Arend 06/07/2023

Bom dia Carlos.

Show de bola !
Problema resolvido.
Como sugestão, vc poderia alterar as instruções no readme do repositorio do github da imagem https://github.com/especializati/setup-docker-laravel/tree/laravel-10-com-php-8.1.
Nas instruções, cita para ajustar o DB_HOST=mysql. Sendo que no docker-compose o container do Mysql esta como db.
Pode induzir as pessoas menos atentas ao erro.

Obrigado!

Diego Arend
Manager Carlos Ferreira 06/07/2023

Boa amigo, obrigado por avisar, corrigi no GitHub;

Carlos Ferreira
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!