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

Falha na aplicação

Consegui iniciar a aplicação, porém não foi possível cadastrar conforme mostra na aula e nem lista as categorias. Embora elas estejam cadastradas no mysql:

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

Oi Jorge, você está tendo algum erro ou coisa parecida?

Olá Wanderson, o problema é que não há comunicação entre os conteiners. É necessário criar uma rede entre eles (como mostrado no curso de docker) ?

Grato

solução!

Creio que sim Jorge.

Ok Wanderson respondido obrigado.

Funcionou? Você testou Jorge?

Não consegui testar Wanderson sem o diretório "Projeto/loja" que contém a aplicação php (AULA 01 - Vídeo 02) é IMPOSSÍVEL praticar !!! Seria possível disponibilizar o diretório da aula !

Aliás como sugestão de melhoria esse curso deveria ser todo refeito, não da pra aproveitar nada dele.

O curso de docker ou mesmo o de android são excelentes, esse curso de Kubernets deveria ser refeito aos moldes destes outros.

Mesmo assim, grato pela resposta e boa vontade em ajudar !

Já estamos vendo isso Jorge, repassei seu feedback pra equipe.

Olá Jorge,

Agradeço o feedback, o objetivo desse vídeo seria relembrar os conceitos do Docker, o projeto já é disponibilizado para vocês no Docker Hub, nesse exercício: https://cursos.alura.com.br/course/kubernetes/task/30063

Ao executar esse trecho, a imagem será disponibilizada para vocês:

web:
    image: rafanercessian/aplicacao-loja:v1
    ports:
      - 8080:80

Um outro problema também é a nova versão do MySQL, por gentileza, utilize a mesma versão do curso, como nesse exercício: https://cursos.alura.com.br/course/kubernetes/task/30058

Qualquer dúvida, estamos à disposição

Atenciosamente

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

Jorge, estou acompanhando o outro tópico. Vamos focar lá? O Instrutor já te respondeu lá. Vamos centralizar só lá pra evitar você precisar duplicar suas respostas?

Eu vou fazer essa primeira aula e fico te devendo um feedback de como foi o processo e se tive os mesmos problemas.

Mas vou dar esse retorno lá no outro tópico já aplicando as soluções indicadas pelo instrutor, tá bem? Vou fechar esse tópico aqui.

Ok combinado Wanderson estou encerrando este entã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