Duvida com o php artisan migrate
Notei que se eu rodar
composer install e php artisan key:generate
fora do container (com o terminal na minha pasta local funciona)... Mas por que quando eu rodo
php artisan migrate
ele nao funciona, nao consigo entender essa situação, uma vez que o servico esta rodando e os volumes são compartilhados entre maquina local e container
Ja descobri porque... Eu nao estava expondo a porta do banco de dados
Isso é explicado na aula Aula: 05 - Acessar Banco Docker com Workbench
Para quem tiver a mesma duvida, segue os meus arquivos
docker-compose.yml
...
db_micro_01:
image: mysql:5.7.22
restart: unless-stopped
environment:
MYSQL_DATABASE: ${DB_DATABASE}
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
MYSQL_PASSWORD: ${DB_PASSWORD}
MYSQL_USER: ${DB_USERNAME}
ports:
- ${DB_PORT}:3306
volumes:
- ./.docker/mysql/db_data:/var/lib/mysql #Database will be saved in this folder... DON'T FORGET to add it in .gitignore
networks:
- microservices
...
.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3308
DB_DATABASE=micro_01
DB_USERNAME=root
DB_PASSWORD=root
Na verdade isso nao funciona, quando cheguei na Aula: 03 - Listar as Categorias API Laravel
Dava erro ao listar as categorias
Olá, Rogerio!
Tudo bem?
Quando roda o comando composer qq-comando vai funcionar porque tem o composer local;
Massss, se precisar fazer algo que precisa acessar banco e etc, vai gerar erros.
Mas, por que?
Porque está trabalhando com containers Docker, sua aplicação está dentro de um container (inclusive o banco está dentro de um container).
Para conseguir ter acesso ao banco, precisa acessar o seu container do micro e rodar os comandos dentro dele:
docker-compose exec nome_do_micro bash
Isso acontece porque nao existe uma rede entre o computador local e o container do docker?
Achei que o docker criava uma rede entre local e container
Imagina o container Docker como uma VM (estilo aquelas que antigamente era muito comum subir com o Virtualbox)
Só que o Docker é mais leve, porque ele não roda um S.O. inteiro, mas sim, um serviço (como o nginx ou mysql ou php etc).
Quando roda uma aplicação no Docker, é como se ela tivesse encapsulada dentro dele, por isso precisamos rodar os comandos dentro do container (que é a "bolha" que a aplicação está dentro).
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!