Solucionado (ver solução)
Solucionado
(ver solução)
10
respostas

Erro ao iniciar o projeto

Notei que o projeto está em um container e a aplicaão em outro. Não houve configuração alguma ao se criar os containers para que eles estivessem na mesma rede. Como configurar os containers para que a aplicação se conecta ao banco de dados ? Isso não foi mostrado nas aulas ! Além disso a aplicação cai em uma tela de login ao acessar http://localhost:8080 e não na tela de cadastro de produtos.

Nada do que é mostrado no curso funciona, precisa ser reestruturado ! Estou muito insatisfeito....

10 respostas

Oi Jorge, tudo bem? Vou verificar algo nessa linha tá bem? Me desculpo e deixo aqui uma consideração: parte desse conhecimento de como por exemplo, conectar dois containers para estar na mesma rede não são diretamente do Kubernetes, mas sim do Docker.

Considerando que você fez o curso de Docker e sendo esse um pré-requisito do curso de Kubernetes, faz sentido o instrutor não reintroduzir algumas coisas.

Me informa aqui se ainda tá com problemas, tá bem? Eu vou estar testando aqui pra ver se encontro problemas também.

Olá Wanderson, tudo bem ! Sim eu fiz o curso de docker (que aliás é excelente) e por isso mesmo achei estranho não ter sido configurada uma rede para os conteiners. Como o contêiner de aplicação acessa o contêiner de banco de dados se não fizemos esta configuração ? Pelo que entendi de sua resposta, parte-se do princípio de que o aluno deve fazer a configuração dessa rede por conta própria ?Ainda assim agradeço a resposta !

Opa Jorge, não, não quis dizer isso. Quis dizer que os conceitos que são pré-requisitos devem ser considerados. Não quis dizer que você deve fazer tudo por conta própria.

Ainda não pude testar o cenário. Desculpe novamente. Mas já vou deixar aqui no meu backlog pra verificar isso hoje no máximo amanhã pra te dar um retorno tanto nesse tópico quanto nos outros. Tá bem?

Desculpa mesmo, vou testar, verificar o problema, te dar um retorno e corrigir algo no curso se for preciso.

Opa e aí Wanderson tudo bem ? Cara acredito que se vc puder diponibilizar aquela pasta da sua área de trabalho onde tem a aplicação tudo poderá ser resolvido facilmente. Se puder disponibilizar eu agradeço.

Jorge, o instrutor respondeu no outro tópico, acho que lá já temos tudo, certo?

Opa tudo bom Wanderson, vi a resposta do instrutor obrigado pela ajuda, porém como explico no outro tópico ainda estou com problemas, mesmo assim obrigado pela ajuda:

  • respondi ao Rafael no outro tópico:

Olá Rafael tudo bem ? Obrigado pela resposta mas cara ainda temos problemas.

Em primeiro lugar fiz o passo a passo conforme indicado da seguinte forma:

  1. Não há necessidade de criar o Dockerfile
  2. Edite o arquivo docker-compose.yaml da seguinte forma
version: "3.0"
services:
  db:
    image: mysql
    environment:
      - MYSQL_DATABASE=loja
      - MYSQL_USER=root
      - MYSQL_ALLOW_EMPTY_PASSWORD=yes
    volumes:
      - /home/jorge/Documentos/kubernets/volumes/volume_mysql:/var/lib/mysql

  web:
    image: rafanercessian/aplicacao-loja:v1
    ports:
      - 8080:80
    depends_on:
      - db
  1. Execute sudo docker-compose up -d
  2. Execute sudo docker ps
  3. Execute sudo docker exec -it projeto_db_1 sh
  4. Execute mysql -u root -p
  5. Criar as tabelas com os comandos mysql
use loja
create table produtos (id integer auto_increment primary key, nome varchar(255), preco decimal(10,2));
alter table produtos add column usado boolean default false;
alter table produtos add column descricao varchar(255);
create table categorias (id integer auto_increment primary key, nome varchar(255));
insert into categorias (nome) values ("Futebol"), ("Volei"), ("Tenis");
alter table produtos add column categoria_id integer;
update produtos set categoria_id = 1;

Para verificar se haviam dados nas tabelas fiz um select simples em cada uma:

Database changed
mysql> select * from categorias;
+----+---------+
| id | nome    |
+----+---------+
|  1 | Futebol |
|  2 | Volei   |
|  3 | Tenis   |
+----+---------+
3 rows in set (0.00 sec)

mysql> select * from produtos;
Empty set (0.00 sec)

mysql> 

Porém ao iniciar a aplicação

  1. As categorias não são listadas, e ao tentar cadastrar
  2. Na tela há alguns warnings, não sei se são importantes:

Warning: mysqli_connect(): Server sent charset (255) unknown to the client. Please, report to the developers in /var/www/html/conecta.php on line 4

Warning: mysqli_connect(): (HY000/2054): Server sent charset unknown to the client. Please, report to the developers in /var/www/html/conecta.php on line 4

Warning: mysqli_query() expects parameter 1 to be mysqli, boolean given in /var/www/html/banco-categoria.php on line 7

Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, null given in /var/www/html/banco-categoria.php on line 8
  1. Ao tentar cadastrar um produto sou redirecionada para a página http://localhost:8080/adiciona-produto.php, o produto não é cadastrado e recebo os seguintes warnings

Warning: mysqli_connect(): Server sent charset (255) unknown to the client. Please, report to the developers in /var/www/html/conecta.php on line 4

Warning: mysqli_connect(): (HY000/2054): Server sent charset unknown to the client. Please, report to the developers in /var/www/html/conecta.php on line 4

Warning: mysqli_query() expects parameter 1 to be mysqli, boolean given in /var/www/html/banco-produto.php on line 14

Fiz testes de ping entre os containers e há ping normalmente.

Como sou curioso dei uma olhada na codumentação do php (http://php.net/manual/en/function.mysqli-connect.php) e editei o arquivo conecta.php deixando da seguinte forma

<?php
# $conexao = mysqli_connect("mysql.hostinger.com.br", "u548680052_loja", "lojaloja", "u548680052_loja");

$conexao = mysqli_connect("172.18.0.2", "root", "", "loja");

Antes estava
$conexao = mysqli_connect("db", "root", "", "loja");

Seguem as configuraçẽos dos meus containers:

CONTAINER ID        IMAGE                              COMMAND                  CREATED             STATUS              PORTS                  NAMES
2bf48b2177a7        rafanercessian/aplicacao-loja:v1   "docker-php-entryp..."   19 minutes ago      Up 19 minutes       0.0.0.0:8080->80/tcp   kubernets_web_1
b2e983da66c6        mysql                              "docker-entrypoint..."   20 minutes ago      Up 19 minutes       3306/tcp, 33060/tcp    kubernets_db_1

Apesar de tudo não obtive sucesso - continua sem listar as categorias e sem poder cadastrar produtos.

Conclusão não consegui sair da primeira aula... o que mais poderia estar errado ?

Grato

solução!

Olá,

Acredito que o problema seja a imagem do MySQL, quando não colocamos uma tag, por padrão a imagem baixada é a latest, ou seja a mais recente que no caso do MySQL é a versão 8, essa versão dará problemas, por favor tente trocar :

image: mysql

Para

image: mysql:5.7.19

Atenciosamente

Opa Jorge, acabei de testar tudo que acontece na primeira aula e de fato as observações do Rafael funcionaram pra mim sem nenhum problema.

Também já foram adicionadas observações no curso.

Dá um feedback pra gente aqui se deu certo pra você também.

Wanderson e Rafael.

Fiz os testes aqui e funcinou perfeitamente. Vocês são simplesmente de mais !

Muito obrigado pela ajuda, são atitudes e profissionais como vcs que comprovam a excelência da Alura e nos fazem querer assinar permanentemente !

Valeu !!!!!

Fico feliz que tenha dado certo pra você Jorge! Bons estudos e caso precise de suporte, pode contar com a gente aqui.

Abraço!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software