Skip to content

GabrielNathan12/Curso-Java-Rocketseat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 

Repository files navigation

Curso-Java-Rocketseat

Descrição

Aplicativo simples de to-do-list, onde a pessoa cadastrar o títudo da terefa, descrição da tarefa, a data postada e a data final para concluir a tarefa.

Esse aplicativo é uma simples versão de uma API usando o Spring-boot java versão 17, ele é apenas a versão back-end do sistema, pois o intuito desse aplicativo é a dockerização e a implatanção no kubernets usando o helm e o kind e o banco de dados da Postgresql.

Funcionamento

Já como é uma API usando apenas o back-end, para testar as requisições é necessário as seguintes ferramentas.
Ferramentas necessárias:

Requisições disponíveis são as GET, POST, DELETE, PATH

Funcionamento do código

O código funciona com 4 classes e mais main, a classe.

Task.java é o mapeamento da minha tabela do meu banco de dados postgres.
TaskController.java é a classe responsável pelo mapeamento das requisições na API. TaskService.java é a classe responsável pelo os dados a serem gravados no banco de dados.
TaskRepository.java essa interface fornece uma série de métodos úteis para realizar operações comuns de CRUD (Create, Read, Update, Delete) no banco de dados para a entidade Task.

Funcionamento do Dockerfile

FROM openjdk:17 Puxa a imagem do java 17 do dockerhub
VOLUME /tmp É um volume criado para os dados persistirem no banco de dados
EXPOSE 8080 Informa que a aplicação vai estar escutando na porta 8080
RUN mkdir -p /app Cria um diretório dentro do sistema de arquivos do contêiner
APP target/to-do-list-0.0.1-SNAPSHOT.jar adiciona o .jar da aplicação no diretório criado /app e depois é renomeado o .jar para app.jar
ENTRYPOINT[...] É o ponto de entrada padrão para o contêiner executando os seguintes comandos.

  • java Iniciar a JVM
  • -Djava.security.egd=file:/dev/./urandom Configura a propriedade de segurança da JVM para usar.
  • -Dspring.profiles.active=container Configura a propriedade de perfil para iniciar com o contêiner.
  • -jar /app/app.jar Executa a aplicação atravéz do docker.

Funcionamento do docker-compose

  • image

Este serviço define um contêiner para o banco de dados PostgreSQL.

image: postgres:latest Usa a imagem oficial do PostgreSQL na versão mais recente.
network_mode: bridge: Define o modo de rede como bridge.
container_name: postgres: Define o nome do contêiner como "postgres".
volumes: - postgres-data:/var/lib/postgresql/data: Cria um volume chamado "postgres-data" para persistir os dados do PostgreSQL.
expose: - 5432: Exponha a porta 5432 internamente.
ports: - 5432:5432: Mapeia a porta 5432 do host para a porta 5432 do contêiner, permitindo a conexão externa ao banco de dados.
environment: [...]: Configura variáveis de ambiente para a instância do PostgreSQL, como senha, usuário e banco de dados.
restart: unless-stopped: Garante que o contêiner seja reiniciado, a menos que seja explicitamente parado.

image

Este serviço define um contêiner para a sua aplicação "dev-ops".

image: dev-ops:latest: Usa a imagem "dev-ops" na versão mais recente.
network_mode: bridge: Define o modo de rede como bridge.
container_name: dev-ops: Define o nome do contêiner como "dev-ops".
expose: - 8080: Exponha a porta 8080 internamente.
ports: - 8080:8080: Mapeia a porta 8080 do host para a porta 8080 do contêiner.
restart: unless-stopped: Garante que o contêiner seja reiniciado, a menos que seja explicitamente parado.
depends_on: - postgres: Define uma dependência em relação ao serviço "postgres", garantindo que o banco de dados esteja disponível antes de iniciar este serviço.
links: - postgres: Cria um link para o serviço "postgres", permitindo que o serviço "dev-ops" se comunique com o serviço do PostgreSQL usando o nome do contêiner "postgres".

Volumnes: Define um volume para o contêiner
postgres-data: É usado pelo serviço Postgres para a persistência dos dados.

Executar a aplicação com o docker-composer

docker build -t gabrielnathan/dev-ops:v9 . docker push gabrielnathan/dev-ops:v9
docker-compose up -d
image

  • Configuração do application.properties

Usando o Helm Kubernetes

Foi adicionados apenas 2 arquivos a mais na pasta que foi criado usando o comando do helm e algumas configurações no values.yaml, Chart.yaml e no deployment.yaml.

config-map.yaml Separa as configurações do pod e dos componentes, o que ajuda a manter as cargas de trabalho portáteis.

secrect.yaml Evita que você tenha de incluir dados confidenciais no seu código

deployment.yaml Configurações

image

Values.yaml Configurações adicionadas no final do arquivo

image

Chart.yaml Adiciona a depência do postgres no arquivo

image

Executando com Helm e Kubernetes

helm install dev-ops ./dev-ops
$POD_NAME = kubectl get pods --namespace default -l "app.kubernetes.io/name=dev-ops,app.kubernetes.io/instance=dev-ops" -o jsonpath="{.items[0].metadata.name}"
$CONTAINER_PORT = kubectl get pod --namespace default $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}"
kubectl --namespace default port-forward $POD_NAME 8080:$CONTAINER_PORT

image

No arquivo application.properties nao esquecer de colocar a informação do serviço que está implantado com o Postgres

Exemplo:

image

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published