1
resposta

Aplicação PHP não mostra lista de itens adicionados após inclusão

Fiz todos os ajustes necessários nos arquivos .yaml e os PODs e Services, estão funcionando, consigo acessar a pagina inicial de cadastro da aplicação PHP normalmente, porém ao incluir o produto o mesmo não é salvo no banco de dados e a aplicação não é redirecionada para a lista de produtos como mostrado no vídeo.

Seguem meus arquivos .yaml e os prints do banco de dados e do problema:

servico-aplicacao.yaml:

apiVersion: v1
kind: Service
metadata:
  name: servico-aplicacao
spec:
  type: LoadBalancer
  ports:
    - port: 80
  selector:
    name: aplicacao-pod

statefulset.yaml

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: statefulset-mysql
spec:
  serviceName: db
  selector:
    matchLabels:
      name: mysql
  template:
    metadata:
      labels:
       name: mysql
    spec:
      containers:
        - name: container-mysql
          image: mysql:5.5
          ports:
            - containerPort: 3306
          env:
            - name: MYSQL_DATABASE
              value: "loja"
            - name: MYSQL_USER
              value: "root"
            - name: MYSQL_ALLOW_EMPTY_PASSWORD
              value: "1"
          volumeMounts:
            - name: volume-mysql
              mountPath: /var/lib/mysql
      volumes:
       - name: volume-mysql
         persistentVolumeClaim:
           claimName: configuracao-mysql

permissoes.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: configuracao-mysql
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 3Gi

Script Inicial Banco.sql

mysql -u root
use loja;
create table produtos (id integer auto_increment primary key, nome varchar(255), preco decimal(10,2));
alter table produtos add column usando 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;

PODS Insira aqui a descrição dessa imagem para ajudar na acessibilidade Services Insira aqui a descrição dessa imagem para ajudar na acessibilidade Aplicação Rodando Insira aqui a descrição dessa imagem para ajudar na acessibilidadeApós Clicar no Botação Cadastrar, nada é exibido e a aplicação direciona para a página errada: Insira aqui a descrição dessa imagem para ajudar na acessibilidadeO que ocorre ao clicar no botão Cadastrar quando mando exibir as chamadas de rede da aplicação: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Tabelas do BancoInsira aqui a descrição dessa imagem para ajudar na acessibilidade

Conteúdo das tabelas: Insira aqui a descrição dessa imagem para ajudar na acessibilidadeComo podem ver não foi gravado no banco de dados e aparentemente tudo está correto.

Conseguem ajudar com esse problema?

OBS: O mesmo problema ocorre dentro da Azure.

1 resposta

Olá, Reginaldo!

Analisando os arquivos .yaml e as informações que você forneceu, há alguns pontos que podemos verificar para tentar solucionar o problema da aplicação PHP não estar salvando os itens no banco de dados e não estar redirecionando para a lista de produtos após a inclusão.

  1. Conexão com o Banco de Dados: Certifique-se de que a aplicação PHP está configurada corretamente para se conectar ao serviço do banco de dados. No arquivo servico-aplicacao.yaml, você definiu o serviço com o nome servico-aplicacao, mas para que a aplicação PHP se comunique com o banco de dados, ela precisa conhecer o endereço do serviço do banco, que no seu caso parece ser db (conforme o servico-banco.yaml que você mencionou no contexto). Verifique se o host configurado na aplicação PHP para a conexão com o banco de dados corresponde ao nome do serviço do banco (db).

  2. Configuração do Banco de Dados: No arquivo statefulset.yaml, você configurou o banco de dados MySQL com as variáveis de ambiente necessárias. Contudo, é importante garantir que as tabelas e os dados foram criados corretamente. Você pode acessar o shell do MySQL dentro do pod do banco de dados usando o comando kubectl exec -it statefulset-mysql-0 -- mysql -u root -p e então verificar se as tabelas foram criadas e se estão estruturadas corretamente, conforme o script Banco.sql.

  3. Logs da Aplicação: Verifique os logs da aplicação PHP para identificar possíveis erros que estejam ocorrendo durante a tentativa de inserção dos dados. Use o comando kubectl logs <nome-do-pod-aplicacao> para obter os logs do pod onde a aplicação está rodando.

  4. Configuração dos PODs e Services: Nas imagens que você forneceu, é possível ver que os PODs e Services estão em execução. No entanto, é importante verificar se o seletor (selector) no servico-aplicacao.yaml corresponde às labels definidas no pod da aplicação. Se houver algum descompasso, o serviço não conseguirá direcionar o tráfego para o pod correto.

  5. Problemas de Redirecionamento: Se a aplicação não está redirecionando corretamente após a inclusão de um produto, pode haver algum problema no código da aplicação PHP. Verifique se os cabeçalhos de redirecionamento estão sendo enviados corretamente após a inserção dos dados no banco.

  6. Permissões de Rede: Como você mencionou que o problema ocorre tanto localmente quanto no Azure, pode ser que haja alguma configuração de rede ou permissão que esteja impedindo a comunicação entre a aplicação e o banco de dados. Verifique as regras de rede no Azure para garantir que não há bloqueios entre os serviços.

Após verificar esses pontos, caso o problema persista, manda aqui de novo.

Espero ter ajudado e bons estudos!