Skip to content

Latest commit

 

History

History

db

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

API Spring Boot RESTful

Docker Postgres

Construindo a base da aplicação com o gerenciador de containers docker, onde baixar a imagem docker para o banco de dados Postgres. Para começar a desenvolver nossa API, precisamos configurar um banco de dados. Nesta etapa vamos utilizar o Sistema Gerenciador de Banco de Dados PostgreSQL hospedado em um container Docker.

Docker

O Docker é um sistema gerenciador de containers, os containers são parecidos com máquinas virtuais, porém são mais leves pois utilizam o sistema operacional do seu computador como hospedeiro. Vou deixar o link para uma apostila em docker, pois iremos utilizar muitos dos comandos básicos em docker.

Com o Docker instalado, vamos baixar a imagem docker do banco de dados Postgres:

docker pull postgres

Vamos executar um container com esta imagem com o seguinte comando (-d --detach (-d) mode 'rodar em segundo plano'):

docker run --name postgresql -p 5480:5432 -e POSTGRES_PASSWORD=postgres -d postgres

Verifique se o container está rodando na porta selecionada, com o comando:

docker ps

Este comando deve gerar uma saída parecida com esta:

CONTAINER ID   IMAGE      COMMAND                 CREATED         STATUS         PORTS                    NAMES
b47947e7ba5e   postgres   "docker-entrypoint.s…"  6 seconds ago   Up 2 seconds   0.0.0.0:5480->5432/tcp   postgresql

PostgreSQL

O PostgreSQL é um sistema gerenciador de banco de dados objeto-relacional, gratuito e de código fonte aberto foi desenvolvido a partir do projeto Postgres, iniciado em 1986, na Universidade da Califórnia em Berkeley, sob a liderança do professor Michael Stonebraker.

Já temos um banco de dados rodando em nossa máquina, conseguimos acessá-lo utilizando a interface de linha de comando PSQL, mas como configurar, criar usuários, salvar e exportar os dados para edição? Estudar os comandos básicos para utilizar um software é o primeiro passo. Para executar os comandos aqui listados é necessário ter a instalação do PostgreSQL linha de comando.

Vamos entrar na interface de linha de comando do banco de dados PostgreSQL utilizando o camando abaixo (Nós definimos a senha no camando acima -e POSTGRES_PASSWORD=postgres):

psql -h 0.0.0.0 -p 5480 -U postgres

Vamos criar um banco de dados novo com o comando abaixo, nunca utilize o banco de dados de nome postgres, sempre crie um novo com um novo usuário. Lembre-se que a senha do usuário root defininos como postgres:

createdb -h 0.0.0.0 -p 5480 -U postgres users_control "Controle de usuários"

Vamos testar a conexão com o banco de dados recém criado utilizando o comando abaixo:

psql -h 0.0.0.0 -p 5480 -U postgres -d users_control

Com a interface de linha de comando em aberto, execute a seguinte linha em SQL:

SELECT table_name FROM information_schema.tables WHERE table_schema='public';

Bom a saída deve ser parecida com essa:

users_control=# SELECT table_name FROM information_schema.tables WHERE table_schema='public';
 table_name
------------
(0 rows)

Estamos com 0 tabelas em nosso banco de dados, vamos salvar alguns dados então? Mas antes vamos criar um usuário para nossa aplicação, lembrando que o recomendado é que a aplicação nunca utilize o usuário root do banco de dados. Para criar um usuário (é claro que precisamos estar com o CLI do banco em aberto), vamos executar o comando abaixo em SQL:

CREATE USER api_restful WITH PASSWORD 'api_spring_restful';

Se o resultado foi CREATE ROLE quer dizer que ocorreu tudo bem, mas para ter certeza vamos sair da linha de comando do BD e vamos entrar de novo com o novo usuário (para sair é simples Ctrl + D):

psql -h 0.0.0.0 -p 5480 -U api_restful -d users_control

Pronto agora podemos relaxar, pois não estamos mais com todos os poderes do root (o símbolo # foi substituído por >). Agora que sabemos que o novo usuário está funcionando, vamos salvar alguns dados em nome dele (Ctrl + D mais uma vez).

Nossos dados possuem a seguinte estrutura, mas lembrando que podemos salvar de várias formas:

Possuímos nossos dados em tabelas CSV, e vamos importá-las utilizando o seguinte comando que vai executar o arquivo sql, explicado no vídeo:

psql -h 0.0.0.0 -p 5480 -U postgres -d users_control -f create_tables.sql

Verifique se as tabelas foram criadas utilizando o comando usado anteriormente:

users_control=> SELECT table_name FROM information_schema.tables WHERE table_schema='public';
     table_name
---------------------
 users
 user_authorizations
(2 rows)

Tente acessar as tabelas utilizando os comandos básicos do SQL:

users_control=> select * from users;
 id | username |                           password
----+----------+--------------------------------------------------------------
  1 | admin    | $2a$10$TS76TLIpbza7YTiRbX3FBunc56D9MgeFoMXHqqiJOIn0LW9asLnyC
  2 | user     | $2a$10$GEBIkDxEZDC5X35r86W0SelBMDM45/lbp3CpJvaPmq4YT9TWb2Z6O
(2 rows)

Agora quero exportar esses dados para executar em outra máquina. Executar os comandos um de cada vez abaixo para exportar as tabelas no banco de dados:

psql -h 0.0.0.0 -p 5480 -U postgres -d users_control \
    -c "\COPY users TO '/home/${USER}/csv/users_exported.csv' DELIMITER ';' CSV HEADER;"
psql -h 0.0.0.0 -p 5480 -U postgres -d users_control \
    -c "\COPY user_authorizations TO '/home/${USER}/csv/user_authorizations_exported.csv' DELIMITER ';' CSV HEADER;"

Se deu um erro, execute o seguinte comando para autorizar a excrita do banco de dados na pasta (No linux), execute os comandos acima mais uma vez e os dados estaram nesta pasta:

mkdir /home/${USER}/csv && sudo chmod 777 /home/${USER}/csv

Obs.: Todos os comandos e tecnologias são explicados nos vídeos no youtube.