Este tutorial foi produzido por mim com intuito de ajudar as pessoas que estão iniciando no mundo de desenvolvimento a fim de aprender a configurar o banco de dados PostgreSQL em um container docker em um ambiente de desenvolvimento Linux.
Para instalação do docker em sua distribuição linux consulte a documentação oficial no link abaixo:
https://docs.docker.com/engine/install/
Use o comando abaixo para iniciar o docker após instalação:
sudo systemctl start docker
Use o comando abaixo para fazer um stop(parar) o funcionamento do docker se necessário:
sudo systemctl stop docker
1.1 - Criar container docker do PostgreSQL com a versão 14.0:
No link abaixo é possível obter informações sobre a imagem oficial do PostgreSQL no Docker Hub:
https://hub.docker.com/_/postgres
Instale o PostgreSQL na versão 14.0 com o comando abaixo:
docker run --name postgres -e POSTGRES_PASSWORD=123456 -d -p 5432:5432 postgres:14.0
1.2 - Verificar se o PostgreSQL foi instalado no docker:
docker ps -a
1.3 - Executar o container com o PostgreSQL:
Ao utilizar o comando docker ps -a é possível obter o CONTAINER ID, copie e cole no comando abaixo seu ID:
docker start <CONTAINER ID>
Ao colar o ID do seu container docker o comando ficará assim:
docker start 2b057c2cf612
1.4 - Parar o funcionamento do container:
docker stop postgres
ou
docker stop 2b057c2cf612
1.5 - Iniciar o container:
docker start postgres
ou
docker start 2b057c2cf612
2.1 - Acessar o bash do PostgreSQL :
docker exec -it postgres bash
2.3 Verificar o diretório é exatamente /:
pwd
2.4 - Acessar o postgres como root:
psql -U postgres
2.5 - Listar usuários:
\du
Observe na imagem abaixo que o usuário postgres já tem atributos de superusuário:
OBS: Caso queira sair do postgres, digite o comando abaixo até voltar para a tela inicial do seu terminal no seu usuário local da máquina:
exit
Se ocorrer do comando exit não funcionar, digite o comando abaixo:
\q
2.6 - Iniciar o PostgreSQL na porta 5432:
Sempre que for utilizar o PostgreSQL será necessário utilizar o comando abaixo para iniciar o PostgreSQL na porta 5432 utilizando o usuário root postgres:
docker exec -it 2b057c2cf612 psql -h localhost -p 5432 -U postgres
Obs: No comando acima utilize o seu container id no lugar de 2b057c2cf612.
3.1 - Criar um banco de dados:
Há duas formas de se criar um banco de dados utilizando o PostgreSQL via terminal:
1 - Já logado com o usuário postgres, seguindo todo item 2 descrito acima, digite o comando abaixo:
CREATE DATABASE universidade;
Caso queria deletar o banco de dados criado por algum motivo, digite o comando abaixo sabiamente:
DROP DATABASE IF EXISTS universidade
2 - Sem estar logado no usuário postgres, mas já com o docker e o container funcionado conforme item 1 descrito acima, digite o comando abaixo:
docker exec -it 2b057c2cf612 psql -U postgres -c "CREATE DATABASE universidade"
Caso queria deletar o banco de dados criado por algum motivo, digite o comando abaixo sabiamente:
docker exec -it 2b057c2cf612 psql -U postgres -c "DROP DATABASE IF EXISTS universidade"
3.2 - Listar os bancos de dados existentes:
Ao utilizar o comando abaixo para listar os banco de dados existentes, ficará visivel o banco de dados criado no item 3.1, conforme imagem abaixo:
\l
3.3 - Conexao com banco de dados criado:
Para criar as tabelas será necessário se conectar ao banco de dados criado no item 3.1, logo utilize o comando abaixo:
\c universidade
Observe na imagem abaixo que estamos conectado ao banco de dados universidade utilizando o usuário postgres:
3.4 - Criar tabelas:
Utilizar as queries abaixo para criar as tabelas dentro do banco de dados universidade:
CREATE TABLE professores(
matricula VARCHAR(10) NOT NULL PRIMARY KEY,
cpf VARCHAR(14) NOT NULL,
nome VARCHAR(255) NOT NULL,
sobrenome VARCHAR(255) NOT NULL
);
CREATE TABLE disciplinas(
codigo VARCHAR(20) NOT NULL PRIMARY KEY,
titulo VARCHAR(1000) NOT NULL,
professor_matricula VARCHAR(10) NOT NULL,
CONSTRAINT fk_professor_disciplinas FOREIGN KEY(professor_matricula) REFERENCES professores
);
Observe na imagem abaixo que as tabelas foram criadas:
3.5 - Listar as tabelas criadas:
Utilizar o comando abaixo para listar as relações presentes no banco de dados universidade:
\dt
3.6 - Listar os parâmetros das tabelas criadas:
\d professores
Observe na imagem abaixo que todos os parâmetros utilizados na query de criacao da table estão presentes:
\d professores
Observe na imagem abaixo que todos os parâmetros utilizados na query de criação da tabela estão presentes:
\d disciplinas
Observe na imagem abaixo que todos os parâmetros utilizados na query de criação da tabela estão presentes:
3.7 - Inserir dados na tabela professor:
Utilizar as queries abaixo para inserir dados na tabela professores dentro do banco de dados universidade:
INSERT INTO professores (matricula, cpf, nome, sobrenome) VALUES('0001-1', '000.000.000-01', 'Mark', 'Twin');
INSERT INTO professores (matricula, cpf, nome, sobrenome) VALUES('0358-2', '000.000.000-76', 'Letícia', 'Bragança');
INSERT INTO professores (matricula, cpf, nome, sobrenome) VALUES('1765-4', '000.000.000-98', 'Paulo', 'Pereira');
INSERT INTO professores (matricula, cpf, nome, sobrenome) VALUES('0023-1', '000.000.000-18', 'Helena', 'Avelino');
3.8 - Verificar a tabela professores:
O comando abaixo seleciona todos(*) os items presentes na tabela professores e os lista:
SELECT * FROM professores;
Observe conforme imagem abaixo que os dados iseridos no item 3.7 se encontram presentes na table professores:
3.9 - Inserir dados na tabela disciplinas :
Utilizar as queries abaixo para inserir dados na tabela disciplinas dentro do banco de dados universidade:
INSERT INTO disciplinas (codigo, titulo, professor_matricula) VALUES('ED123', 'Estrutura de dados', '0001-1');
INSERT INTO disciplinas (codigo, titulo, professor_matricula) VALUES('BM034', 'Bioquímica de Macromoléculas', '0358-2');
INSERT INTO disciplinas (codigo, titulo, professor_matricula) VALUES('MQ198', 'Mecânica Quantica', '1765-4');
INSERT INTO disciplinas (codigo, titulo, professor_matricula) VALUES('FS572', 'Física dos Sólidos', '0023-1');
3.10 - Verificar a tabela disciplinas:
O comando abaixo seleciona todos(*) os items presentes na tabela professores e os lista:
SELECT * FROM disciplinas;
Observe conforme imagem abaixo que os dados iseridos no item 3.9 se encontram presentes na table disciplinas:
Para download do PgAdmin4 acesse o link abaixo, lembrando que deve instalar exatamente para o sistema de pacotes da sua distribuição linux:
https://www.pgadmin.org/download/
4.1 - Configuração do PgAdmin4:
Ao iniciar o PgAdmin4 ele irá solicitar a sua senha root do PostgreSQL, digite a senha utilizada na criação do container docker do PostgreSQL no item 1.1 em seguida clique em OK:
Senha: 123456
Clique em cima de Servers com botão direito do mouse e entre em Server:
Já em Server, no campo Name digite o nome Local para nome do server:
Em seguida entre na aba Connection e no campo Host name/address digite localhost. Em Password digite 123456 pois essa será a senha para acessar o banco de dados no PgAdmin4, em seguida clique em Save:
Pronto, o PgAdmin4 está configurado e com acesso aos bancos de dados, conforme imagem abaixo, clique em no server Local para expandir, depois clique em Databases e em seguida clique sobre o banco de dados universidade para para o iniciar.
Observe na imagem abaixo que as tabelas criadas no item 3.4 se encontram dentro de Schemas em Tables.
Clique com botão o direito sobre a tabela disciplinas, depois vá em View/Edit Data e clique em All Rows para listar todas as linhas presentes na tabela disciplinas:
Observer que a interface do PgAdmin4 agora propicia vários recursos e observe na imagem abaixo em Data Output a tabela disciplinas e todas as suas linhas:
Para download do DBeaver acesse o link abaixo:
- Ir em: Database > New Database Connection
- Conforme imagem abaixo, clique no icone do PostgreSQL e depois clique em next( botão na parte inferior).
-
Confome imagem abaixo, use os seguintes valores:
- Server Host: localhost
- Database: universidade
- Username: postgres
- Password: 123456
- Clique em Test Connection para verificar se a configuração está correta e realizar uma conexão com sucesso.
- Agora o PostgreSQL está configurado no DBeaver para uso no Linux conforme imagem abaixo:
Utilizar o comando abaixo para entrar no bash do container do PostgreSQL:
docker exec -it postgres bash
Digitar o comando abaixo para listar as pastas ou arquivos presentes no diretório:
ls
Em seguida, digite o comando abaixo para criar o backup do banco de dados universidade:
pg_dump -U postgres -h localhost -p 5432 universidade > dump20211010.sql
Digite novamente o comando ls para para listar as pastas ou arquivos presentes no diretório, observe que o arquivo dump20211010.sql foi criado conforme imagem:
Agora utilize o comando abaixo em uma nova janela/aba do terminal para criar uma cópia do arquivo de backup dump20211010.sql o movendo para o diretório desejado:
docker cp 2b057c2cf612:/dump20211010.sql /home/filipe/mydocs/dev/docker/tutorial-como-instalar-postgresql-no-docker-linux/database/backup/Dump20211010/
O comando acima é basicamente isso:
docker cp <numero do seu container do PostgreSQL>:/backup.sql <caminho para o diretório que você deseja copiar o arquivo nele>
Utilize o comando abaixo para listar/mostrar o arquivo copiado para o diretório desejado:
ls /home/filipe/mydocs/dev/docker/tutorial-como-instalar-postgresql-no-docker-linux/database/backup/Dump20211010/
Conforme imagem abaixo podemos observar que o arquivo de backup criado foi copiado para o diretório desejado:
Em seguida, recomendo que delete o arquivo de backup criado dentro do container docker para não encher o mesmo de arquivo desnecessário(ou deixe ele ali pelo tempo que você necessitar), use o comando abaixo para deletar o arquivo dump20211010.sql:
rm -rf dump20211010.sql
Conforme imagem abaixo o arquivo de backup dump20211010.sql foi deletado:
O objetivo desse tutorial não é fazer um CRUD(Create, Read, Update, Delete), mas sim aprender a utilizar PostgreSQL com Docker, PgAdmin4 e DBeaver. Se sinta a vontade para fazer um CRUD e criar seu próprio banco de dados e tabelas.