Pedro, no repositório do TabNews usamos Postgres com Docker Compose. O repositório ainda está no modo privado, mas caso queira o convite, acesse esse link.
Em paralelo, nosso docker-compose.development.yml
possui o conteúdo abaixo e levanta dois serviços, o PostgresSQL de desenvolvimento (que puxa variáveis de ambiente do arquivo .env
e um serviço de email utilizando o MailCatcher (que não tem nada a ver com sua dúvida).
version: '2.4'
services:
postgres_dev:
container_name: 'postgres-dev'
image: 'postgres:14.1-alpine'
env_file:
- ../.env
ports:
- '54320:5432'
volumes:
- postgres_data:/data/postgres
restart: unless-stopped
mailcatcher:
container_name: mailcatcher
image: sj26/mailcatcher
expose:
- 1025
- 1080
ports:
- 1025:1025
- 1080:1080
volumes:
postgres_data:
E o arquivo .env
define várias variáveis de ambiente, principalmente as que o Container Docker do PostgresSQL utiliza (são as que começam por POSTGRES_
):
POSTGRES_USER=local_user
POSTGRES_PASSWORD=local_password
POSTGRES_DB=tabnews
POSTGRES_HOST=localhost
POSTGRES_PORT=54320
DATABASE_URL=postgres://local_user:local_password@localhost:54320/tabnews
WEBSERVER_HOST=localhost
WEBSERVER_PORT=3000
EMAIL_SMTP_HOST=localhost
EMAIL_SMTP_PORT=1025
EMAIL_HTTP_HOST=localhost
EMAIL_HTTP_PORT=1080
EMAIL_USER=
EMAIL_PASSWORD=
E para rodar, utilizamos esse comando:
docker-compose -f infra/docker-compose.development.yml up -d
A flag -f
define o endereço customizado do arquivo .yml
e a flag -d
roda o serviço em modo detached
(sem prender a linha de comando).