Commit 747a8018 authored by Pedro Eduardo Trujillo's avatar Pedro Eduardo Trujillo
Browse files

Pone al día el proyecto

Cambia imagen base.
Actualiza definición de imagen.
Mueve ajustes asignados en la creación a la ejecución.
Actualiza recursos de despliegue.
Reajusta valores.
Elimina restos.
Actualiza documentación.
parent cbd9c719
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
*
!rootfs
!docker-entrypoint-initdb.d
+5 −96
Original line number Diff line number Diff line
@@ -7,105 +7,14 @@ include:
    file: '/deployment.yml'
  - project: 'redmic-project/gitlab-ci-templates'
    ref: master
    file: '/maintenance.yml'
    file: '/deployment-custom-image.yml'

stages:
  - pre-package
  - package
  - test-package
  - post-package
  - deploy
  - maintenance

.deploy:
  variables:
    STACK: vessel

.deploy-development:
  variables:
    COMPOSE_FILE: docker-compose.${CI_PROJECT_NAME}.tmpl.yml:docker-compose.${CI_PROJECT_NAME}.dev.yml
  script:
    - >
      deploy.sh IMAGE_NAME=${IMAGE_NAME} IMAGE_TAG=${IMAGE_TAG} POSTGRES_USER=${POSTGRES_USER}
      POSTGRES_PASSWORD=${POSTGRES_PASSWORD} INTERVAL=${INTERVAL}
      MAINTENANCE_INTERVAL_MINUTE="${MAINTENANCE_INTERVAL_MINUTE}"
      MAINTENANCE_INTERVAL_HOUR="${MAINTENANCE_INTERVAL_HOUR}"
      MAINTENANCE_INTERVAL_DAY_OF_MONTH="${MAINTENANCE_INTERVAL_DAY_OF_MONTH}"
      MAINTENANCE_INTERVAL_MONTH="${MAINTENANCE_INTERVAL_MONTH}"
      MAINTENANCE_INTERVAL_DAY_OF_WEEK="${MAINTENANCE_INTERVAL_DAY_OF_WEEK}" RETENTION_TIME="${RETENTION_TIME}"
      POSTGRES_WORK_MEM=${POSTGRES_WORK_MEM} EXPORTER_USER=${EXPORTER_USER} EXPORTER_PASS=${EXPORTER_PASS}
  environment:
    name: dev/${CI_PROJECT_NAME}

.deploy-production:
  variables:
    COMPOSE_FILE: docker-compose.${CI_PROJECT_NAME}.tmpl.yml:docker-compose.${CI_PROJECT_NAME}.prod.yml
  script:
    - >
      deploy.sh IMAGE_NAME=${IMAGE_NAME} IMAGE_TAG=${IMAGE_TAG} POSTGRES_USER=${POSTGRES_USER}
      POSTGRES_PASSWORD=${POSTGRES_PASSWORD} INTERVAL=${INTERVAL}
      MAINTENANCE_INTERVAL_MINUTE="${MAINTENANCE_INTERVAL_MINUTE}"
      MAINTENANCE_INTERVAL_HOUR="${MAINTENANCE_INTERVAL_HOUR}"
      MAINTENANCE_INTERVAL_DAY_OF_MONTH="${MAINTENANCE_INTERVAL_DAY_OF_MONTH}"
      MAINTENANCE_INTERVAL_MONTH="${MAINTENANCE_INTERVAL_MONTH}"
      MAINTENANCE_INTERVAL_DAY_OF_WEEK="${MAINTENANCE_INTERVAL_DAY_OF_WEEK}" RETENTION_TIME="${RETENTION_TIME}"
      POSTGRES_WORK_MEM=${POSTGRES_WORK_MEM} EXPORTER_USER=${EXPORTER_USER} EXPORTER_PASS=${EXPORTER_PASS}
      AWS_REGION=${AWS_REGION}
  environment:
    name: pro/${CI_PROJECT_NAME}

.deploy-backup:
  extends: .deploy
  variables:
    SERVICES_TO_CHECK: ${STACK}_backup-db
    IMAGE_NAME: ${POSTGRES_BACKUP_IMAGE_NAME}
    IMAGE_TAG: ${POSTGRES_BACKUP_IMAGE_TAG}
  script:
    - >
      deploy.sh IMAGE_NAME=${IMAGE_NAME} IMAGE_TAG=${IMAGE_TAG} COMPOSE_FILE=${COMPOSE_FILE}
      AWS_REGION=${AWS_REGION} POSTGRES_USER=${POSTGRES_USER} POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      POSTGRES_HOSTNAME=${POSTGRES_HOSTNAME} BUCKET_BACKUP_DB=${BUCKET_BACKUP_DB}
      AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
      PUSHGATEWAY_HOST=${PUSHGATEWAY_HOST} PUSHGATEWAY_JOB=${PUSHGATEWAY_JOB}

.deploy-backup-development:
  extends: .deploy-backup
  variables:
    SSH_REMOTE: ${DEV_SSH_REMOTE}
    COMPOSE_FILE: docker-compose.backup-db.tmpl.yml:docker-compose.backup-db.dev.yml
  environment:
    name: dev/backup-db

.deploy-backup-production:
  extends: .deploy-backup
  variables:
    SSH_REMOTE: ${PRO_SSH_REMOTE}
    COMPOSE_FILE: docker-compose.backup-db.tmpl.yml:docker-compose.backup-db.prod.yml
  environment:
    name: pro/backup-db

deploy-backup-support-branch-development:
  extends: .deploy-backup-development
  only:
    - branches
  except:
    - master
    - schedules

deploy-backup-stable-branch-development:
  extends: .deploy-backup-development
  only:
    - master
  except:
    - schedules

deploy-backup-stable-branch-production:
  extends: .deploy-backup-production
  only:
    - master
  except:
    - schedules

.scheduled-run:
  variables:
    SERVICE: ${STACK}_backup-db

scheduled-run-development:
  script: ':'
+32 −25
Original line number Diff line number Diff line
FROM mdillon/postgis:11-alpine
ARG POSTGIS_IMAGE_TAG="11-3.2-alpine"
FROM postgis/postgis:${POSTGIS_IMAGE_TAG}

LABEL maintainer="info@redmic.es"

ENV PG_CRON_VERSION="1.1.4" \
	PG_PARTMAN_VERSION="4.0.0" \
	POSTGRES_WORK_MEM="1GB"
ARG PG_CRON_VERSION="1.4.1" \
	PG_PARTMAN_VERSION="4.6.0" \
	BUILD_BASE_VERSION="0.5-r2" \
	CLANG_VERSION="12.0.1-r1" \
	LLVM_VERSION="12.0.1-r0" \
	CA_CERTIFICATES_VERSION="20211220-r0" \
	OPENSSL_VERSION="1.1.1l-r8" \
	TAR_VERSION="1.34-r0"

RUN apk add --no-cache --virtual \
		.build-deps \
		build-base \
		ca-certificates \
		openssl \
		tar && \
	wget -O /pg_cron.tgz https://github.com/citusdata/pg_cron/archive/v${PG_CRON_VERSION}.tar.gz && \
	tar xvzf /pg_cron.tgz && \
	cd pg_cron-${PG_CRON_VERSION} && \
# hadolint ignore=DL3003
RUN apk add --no-cache --virtual .build-deps \
		build-base="${BUILD_BASE_VERSION}" \
		clang="${CLANG_VERSION}" \
		llvm="${LLVM_VERSION}" \
		ca-certificates="${CA_CERTIFICATES_VERSION}" \
		openssl="${OPENSSL_VERSION}" \
		tar="${TAR_VERSION}" && \
# install pg_cron
	wget -q -O pg_cron.tar.gz "https://github.com/citusdata/pg_cron/archive/v${PG_CRON_VERSION}.tar.gz" && \
	tar -xzf pg_cron.tar.gz && \
	cd pg_cron-* && \
	sed -i.bak -e 's/-Werror//g' Makefile && \
	sed -i.bak -e 's/-Wno-implicit-fallthrough//g' Makefile && \
	make && \
	make install && \
	cd .. && \
	rm -rf pg_cron.tgz pg_cron-* && \
	wget -O /pg_partman.tgz https://github.com/pgpartman/pg_partman/archive/v${PG_PARTMAN_VERSION}.tar.gz && \
	tar xvzf /pg_partman.tgz && \
	cd pg_partman-${PG_PARTMAN_VERSION} && \
	cd .. ; \
# install pg_partman
	wget -q -O pg_partman.tar.gz "https://github.com/pgpartman/pg_partman/archive/v${PG_PARTMAN_VERSION}.tar.gz" && \
	tar -xzf pg_partman.tar.gz && \
	cd pg_partman-* && \
	make && \
	make NO_BGW=1 install && \
	cd .. && \
	rm -rf pg_partman.tgz pg_partman-* && \
	echo "shared_preload_libraries='pg_cron'" >> /usr/local/share/postgresql/postgresql.conf.sample && \
	echo "checkpoint_timeout = 30min" >> /usr/local/share/postgresql/postgresql.conf.sample && \
	echo "max_wal_size = 2GB" >> /usr/local/share/postgresql/postgresql.conf.sample && \
	mv /usr/local/bin/docker-entrypoint.sh /usr/local/bin/docker-entrypoint-origin.sh
	cd .. ; \
# clean
	rm -rf pg_cron* pg_partman* && \
	apk del .build-deps

COPY rootfs /
COPY docker-entrypoint-initdb.d /docker-entrypoint-initdb.d
+3 −2
Original line number Diff line number Diff line
# AIS Postgres

Base de datos PostgreSQL para almacenar datos AIS.

La tabla principal está particionada por tiempo, de esta forma sólo se accede agiliza las búsquedas que impliquen consultas por fechas.
La tabla principal está particionada por tiempo, para agilizar las consultas por fecha.

# Cálculos
## Cálculos

* Capacidad del disco 51200 MB
* 5% de espacio reservado 2560 MB
+26 −4
Original line number Diff line number Diff line
POSTGIS_IMAGE_TAG=11-3.2-alpine
PG_CRON_VERSION=1.4.1
PG_PARTMAN_VERSION=4.6.0
BUILD_BASE_VERSION=0.5-r2
CLANG_VERSION=12.0.1-r1
LLVM_VERSION=12.0.1-r0
CA_CERTIFICATES_VERSION=20211220-r0
OPENSSL_VERSION=1.1.1l-r8
TAR_VERSION=1.34-r0

SHARED_PRELOAD_LIBRARIES=pg_cron
CHECKPOINT_TIMEOUT=30min
WORK_MEM=1GB
MAX_WAL_SIZE=2GB
POSTGRES_DB=ais
POSTGRES_USER=postgres
POSTGRES_PASSWORD=changeme
PGDATA=/var/lib/postgresql/data/db-files/
INTERVAL=hourly
MAINTENANCE_INTERVAL=30 * * * *
RETENTION_TIME=7 days
POSTGRES_DB=ais
POSTGRES_WORK_MEM=1GB
RETENTION_TIME=4 days
MAINTENANCE_INTERVAL_MINUTE=30
MAINTENANCE_INTERVAL_HOUR=*
MAINTENANCE_INTERVAL_DAY_OF_MONTH=*
MAINTENANCE_INTERVAL_MONTH=*
MAINTENANCE_INTERVAL_DAY_OF_WEEK=*
EXPORTER_USER=exporter-user
EXPORTER_PASS=exporter-pass

NETWORK_ALIAS=ais-db
DATA_VOL_NAME=vessel-postgres-vol
Loading