Primeiramente inicializamos o projeto.
$ rails new project_name --database=postgresql
Em seguida configuramos o docker-compose.yml
version: '3.8'
services:
database:
container_name: project_name
image: postgres
restart: always
environment:
POSTGRES_USER: root
POSTGRES_PASSWORD: root
POSTGRES_DB: project_name_development
volumes:
- ./tmp/db:/var/lib/postgresql/data
ports:
- '5432:5432'
adminer:
container_name: adminer
image: adminer
restart: always
ports:
- "8080:8080"
ps: Eu particularmente gosto de usar o adminer para visualizar as tabelas do banco, então essa imagem é opcional, para acessar ele basta entrar no endereço: localhost:8080, e colocar as credenciais:
sistem: PostgreSql
host: database
user: root
password: root
Em seguida configuramos o arquivo de configuração do banco de dados para o ambiente de desenvolvimento.
# config/database.yml
development:
<<: *default
host: localhost
database: project_name_development
username: root
password: root
port: 5432
Para testarmos basta criarmos um novo model e uma migration.
$ rails g model User email: string
E por fim rodar a migration que vai persistir as mudanças no banco.
$ rails db:migrate
problemas na conexão do postgres caso o projeto esteja rodando no wsl
Atualmente é possível instalar o docker no windows e o wsl se comunicar com os containers dele, no entanto isso pode causar alguns problemas quando uma aplicação rodando dentro do wsl tenta se comunicar com um banco rodando em um container docker dentro do windows. Existem algumas saídas para este tipo de caso.
Primeiro passo
Uma das primeiras coisas a serem feitas é trocar o host da string de conexão por host.docker.internal, pois o localhost do linux dentro do wsl reflete apenas a propria rede e não a do windows que é onde está rodando o container do docker.
host.docker.internal busca o ip correto do container dentro do windows(no caso do wsl é o ip do proprio windows)
Segundo passo
permitir que o wsl abra uma conexão para o windows criando uma regra no firewall:
Você precisa permitir explicitamente que aplicações (como o WSL) se conectem à porta 5432 no seu computador.
-
Abra o Firewall do Windows:
- Pressione a tecla Windows, digite "Firewall" e selecione "Windows Defender Firewall com Segurança Avançada".
-
Crie uma Nova Regra de Entrada:
- No painel esquerdo, clique em "Regras de Entrada".
- No painel direito, clique em "Nova Regra...".
-
Configure a Regra:
- Tipo de Regra: Selecione "Porta" e clique em "Avançar".
-
Protocolo e Portas: Selecione "TCP" e em "Portas locais específicas", digite
5432. Clique em "Avançar". - Ação: Selecione "Permitir a conexão" e clique em "Avançar".
- Perfil: Deixe as três opções marcadas (Domínio, Particular, Público) para garantir que funcione em qualquer rede. Clique em "Avançar".
-
Nome: Dê um nome fácil de lembrar, como
Docker Postgres WSL, e uma descrição se quiser. Clique em "Concluir".
Top comments (0)