Skip to content

PostgreSQL

pre-reqs

curl https://install.gutocarvalho.net/docker.sh|bash
mkdir /opt/postgresql
mkdir /opt/postgresql/{docker,backup,pgadmin,data}
chown 999:999 /opt/postgresql/data
chown 999:999 /opt/postgresql/backup

docker-compose.yaml

crie o arquivo em /opt/postgresql/docker/docker-compose.yaml

networks:
  postgresql:

services:
 postgres:
  image: postgres:17-trixie
  restart: always
  env_file:
    - postgresql.env
  ports:
    - 5432:5432
  volumes:
    - /opt/postgresql/data:/var/lib/postgresql/data
  networks:
    - postgresql

 postgresql_admin:
  image: dpage/pgadmin4
  env_file:
      - postgresql.env
  ports:
    - 8080:80
  volumes:
    - /opt/postgresql/pgadmin:/var/lib/pgadmin
  depends_on:
    - postgres
  networks:
    - postgresql

 postgresql_backup:
    image: "prodrigestivill/postgres-backup-local:latest"
    container_name: pgbackups
    restart: always
    env_file:
      - postgresql.env
    user: postgres:postgres
    volumes:
      - /opt/postgresql/backup:/backups
    depends_on:
      - postgres
    networks:
      - postgresql
    deploy:
      resources:
        limits:
          cpus: '4'
          memory: 1024M
        reservations:
          cpus: '2'
          memory: 256M

postgresql.env

crie o arquivo em /opt/postgresql/docker/postgresql.env

# postgresql
POSTGRES_PASSWORD=senha
POSTGRES_USER=postgres

# pgadmin
PGADMIN_DEFAULT_EMAIL=postgresql@gutocarvalho.net
PGADMIN_DEFAULT_PASSWORD=senha

#pgbackup
POSTGRES_HOST=postgres
POSTGRES_DB="backend,frontend"
POSTGRES_EXTRA_OPTS=-Z1 --schema=public --blobs
SCHEDULE=@daily
BACKUP_KEEP_DAYS=5
BACKUP_KEEP_WEEKS=4
BACKUP_KEEP_MONTHS=3
BACKUP_ON_START=TRUE
HEALTHCHECK_PORT=8080
TZ="America/Sao_Paulo"

inicie tudo

cd /opt/postgresql/docker
docker compose up -d
docker compose logs -f

refs

  • https://gutocarvalho.net
  • https://gcn.sh
  • https://bolha.io
  • https://bolha.us

;)