[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Rogerio E Pereira
Criador Rogerio E Pereira 16/07/2021

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

Criador Rogerio E Pereira 16/07/2021

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

Rogerio E Pereira
Criador Rogerio E Pereira 16/07/2021

Na verdade isso nao funciona, quando cheguei na Aula: 03 - Listar as Categorias API Laravel
Dava erro ao listar as categorias

Rogerio E Pereira
Manager Carlos Ferreira 16/07/2021

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

Carlos Ferreira
Criador Rogerio E Pereira 16/07/2021

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

Rogerio E Pereira
Manager Carlos Ferreira 16/07/2021

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).

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

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!