diff --git a/README.md b/README.md index dd5dffd..040fa95 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,32 @@ # postgresql-pruebacron -PostgreSQL imagen Debian con pg_cron. \ No newline at end of file +PostgreSQL imagen Debian con pg_cron. + +## Preparación + +Copiar el archivo ``env`` a ``.env`` y actualizar las variables necesarias. + +A menos que se detalle lo contrario, las variables tienen los mismos significados que en la imagen oficial de PostgreSQL. + +* En **Podman**, ``POSTGRES_UID`` debe ser ``0`` o ``1`` según el modo de userns escogido. Ver la documentación de Podman para más información. +* En **Docker**, ``POSTGRES_UID`` debe ser un UID para el usuario de Postgres. No debe ser ``0`` o un UID del sistema. +* En **Docker**, ``POSTGRES_INITDB_ARGS`` debe estar definido pero vacío. + +La carpeta postgres.conf.d, contiene los archivos de configuración que se cargan al iniciar el servicio de la base de datos. + +## Uso + +Con ``docker compose up -d`` (asumiendo Docker 24 hacia arriba). + +Con ``podman-compose up -d``. + +## Chequeo + +Para verificar que se ha cargado las configuraciones y el motor correctamente, hay dos pasos: + +* Observar alguna de las variables de los archivos de configuración: + +``postgres> show shared_buffers;`` + +* Observar que pg_cron aparece en la lista de extensiones disponibles en ``CREATE EXTENSION``. + diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..9542b13 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,24 @@ +version: '3.6' +services: + + db: + image: ${POSTGRES_IMAGE?-noimage-} + restart: unless-stopped + user: ${POSTGRES_UID?-nouid-} + environment: + POSTGRES_PASSWORD: "${POSTGRES_PASSWORD?-no-passwd}" + TZ: America/Santiago + #LANG: es_ES.utf8 + PGDATA: ./var/lib/postgresql/data/pgdata + POSTGRES_INITDB_ARGS: "${POSTGRES_INITDB_ARGS}" + ports: + - "${BDD_PORT?-noport-}:5432" + volumes: + - ./postgres.conf.d:/etc/postgresql/conf.d + - ${BDD_STORAGE?-no-storage}:/var/lib/postgresql/data + deploy: + resources: + limits: + memory: '512M' + cpus: '0.25' + diff --git a/env b/env new file mode 100644 index 0000000..03dce96 --- /dev/null +++ b/env @@ -0,0 +1,10 @@ +POSTGRES_IMAGE=forja.helpcom.cl/helpcom/postgres-test:14-2506 +POSTGRES_UID=2000 +POSTGRES_PASSWORD=password +BDD_PORT=60998 +BDD_STORAGE=/home/helpcom/postgres_cron/data.dir +POSTGRES_INITDB_ARGS= +#TZ=America/Santiago +#POSTGRES_INITDB_ARGS=--locale-provider=icu --icu-locale=es_ES +#POSTGRES_INITDB_ARGS=--locale=es_ES + diff --git a/postgres.conf.d/10-locale.conf b/postgres.conf.d/10-locale.conf new file mode 100644 index 0000000..eecf9cf --- /dev/null +++ b/postgres.conf.d/10-locale.conf @@ -0,0 +1,5 @@ +#locale-provider = 'icu' +#icu_locale = 'es_ES.utf8' +datestyle = 'iso, ymd' +timezone = 'America/Santiago' + diff --git a/postgres.conf.d/10-service.conf b/postgres.conf.d/10-service.conf new file mode 100644 index 0000000..851d9d7 --- /dev/null +++ b/postgres.conf.d/10-service.conf @@ -0,0 +1,4 @@ +max_connections = 120 +shared_buffers = 160MB + + diff --git a/postgres.conf.d/20-cron.conf b/postgres.conf.d/20-cron.conf new file mode 100644 index 0000000..2fe29be --- /dev/null +++ b/postgres.conf.d/20-cron.conf @@ -0,0 +1,3 @@ +shared_preload_libraries = 'pg_cron' +cron.database_name = postgres +