# PostgreSQL

Não é necessário instalar o PostgreSQL, pois ele será executado em um container Docker. Instale o Docker seguindo as instruções em primeira-entrega/docker.md.

# Rodando o PostgreSQL

# Iniciando o container

Esteja na pasta que possui o docker-compose.yml e execute o comando abaixo para iniciar o container:

sudo docker compose up

Esse comando inicia o container de acordo com o docker-compose.yml:

version: "3.3"

services:
  db:
    container_name: bd_container
    image: postgres:15.4-alpine
    restart: always
    environment:
      POSTGRES_PASSWORD: 123456
      POSTGRES_USER: bd_projeto
      POSTGRES_DB: bd_projeto_db
      TZ: "America/Sao_Paulo"
    ports:
      - 5436:5432
    volumes:
      # map initialization scripts:
      - ./docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
#
# Use this PostgreSQL url to connect to the database:
# postgresql://bd_projeto:123456@localhost:5436/bd_projeto_db

# Executando comandos no container

É possível executar comandos no container, como psql. Para isso entramos no bash do container usando o comando docker exec:

sudo docker exec -it bd_container /bin/bash

E de dentro do terminal rodamos o comando psql:

psql -U bd_projeto -d bd_projeto_db

# Testando se tudo está funcionando

Usando o que foi visto até agora, podemos testar a conexão com o banco de dados:

Rode em um terminal o banco de dados:

sudo docker compose up

Em outro terminal veja se os scripts de inicialização foram executados:

sudo docker exec -it bd_container /bin/bash
psql -U bd_projeto -d bd_projeto_db
\dt

Deve ser mostrada a tabela com nome sometable:

            List of relations
 Schema |   Name    | Type  |   Owner
--------+-----------+-------+------------
 public | sometable | table | bd_projeto
(1 row)

# Limpando o container

Para limpar totalmente o container, removendo todos os dados, schemas, etc., execute:

sudo docker compose down --volumes
psql -h localhost -U bd_projeto -d bd_projeto_db