Commit 344036f8 authored by Noel Alonso's avatar Noel Alonso
Browse files

Actualiza AWS, dependencias y reestructura docker

Actualiza AWS eliminando la dependencia de python
Añade docker compose para construir y desplegar (desde otro proyecto)
parent 205bc2f2
Loading
Loading
Loading
Loading
+40 −13
Original line number Diff line number Diff line
FROM alpine:3.7
ARG ALPINE_IMAGE_TAG=3.13

FROM alpine:${ALPINE_IMAGE_TAG}

LABEL maintainer="info@redmic.es"

ENV POSTGRES_PORT="5432" \
	POSTGRES_HOSTNAME="postgresql" \
	POSTGRES_USER="postgres" \
	POSTGRES_PASSWORD="password" \
	POSTGRES_PASS_FILE='/root/.pgpass' \
	POSTGRES_PASS_FILE="/root/.pgpass" \
	POSTGRES_DUMP_PATH="/tmp/backup" \
	AWS_DEFAULT_REGION="eu-west-1" \
	PUSHGATEWAY_HOST="pushgateway:9091" \
	AWS_OUTPUT="json" \
	GZIP="-9"
	AWS_OUTPUT="json"

COPY scripts /

RUN apk add --no-cache \
ARG CURL_VERSION=7.74.0-r1
ARG POSTGRESQL_CLIENT_VERSION=13.2-r0
ARG BASH_VERSION=5.1.0-r0
RUN apk list \
		curl \
		postgresql-client \
		python3 \
		bash && \
	rm -rf /var/cache/apk/* && \
	pip3 install --no-cache-dir --upgrade \
		awscli
		bash \
		glib \
		groff && \
	apk update && \
	apk add --no-cache \
		curl=${CURL_VERSION} \
		postgresql-client=${POSTGRESQL_CLIENT_VERSION} \
		bash=${BASH_VERSION}

ARG GLIBC_VER=2.33-r0
ARG AWS_CLI_VERSION=2.0.30
ENV GLIBC_VER=${GLIBC_VER}
ENV AWS_CLI_VERSION=${AWS_CLI_VERSION}
RUN curl -sL https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub -o /etc/apk/keys/sgerrand.rsa.pub && \
	curl -sLO https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VER}/glibc-${GLIBC_VER}.apk && \
	curl -sLO https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VER}/glibc-bin-${GLIBC_VER}.apk && \
	apk add --no-cache \
		glibc-${GLIBC_VER}.apk \
		glibc-bin-${GLIBC_VER}.apk && \
	curl -s "https://awscli.amazonaws.com/awscli-exe-linux-x86_64-${AWS_CLI_VERSION}.zip" -o "awscliv2.zip" && \
	unzip awscliv2.zip && \
	./aws/install && \
	rm -rf \
		awscliv2.zip \
		./aws \
		/usr/local/aws-cli/v2/*/dist/aws_completer \
		/usr/local/aws-cli/v2/*/dist/awscli/data/ac.index \
		/usr/local/aws-cli/v2/*/dist/awscli/examples && \
	rm glibc-${GLIBC_VER}.apk && \
	rm glibc-bin-${GLIBC_VER}.apk && \
	rm -rf /var/cache/apk/*

ENTRYPOINT ["/docker-entrypoint.sh"]

deploy/.env

0 → 100644
+22 −0
Original line number Diff line number Diff line
ALPINE_IMAGE_TAG=3.13
POSTGRES_PASS_FILE=/root/.pgpass
POSTGRES_DUMP_PATH=/tmp/backup
CURL_VERSION=7.74.0-r1
POSTGRESQL_CLIENT_VERSION=13.2-r0
BASH_VERSION=5.1.0-r0
GLIBC_VER=2.33-r0
AWS_CLI_VERSION=2.0.30

POSTGRES_HOSTNAME=changeme
POSTGRES_PORT=5432
POSTGRES_USER=postgres
POSTGRES_PASSWORD=changeme

AWS_DEFAULT_REGION=eu-west-1
AWS_ACCESS_KEY_ID=changeme
AWS_SECRET_ACCESS_KEY=changeme
BUCKET_BACKUP_DB=backup-db
AWS_OUTPUT=json

PUSHGATEWAY_HOST=pushgateway:9091
PUSHGATEWAY_JOB=changeme
+9 −0
Original line number Diff line number Diff line
version: '3.5'

services:
  backup-db:
    deploy:
      placement:
        constraints:
          - node.role == worker
          - engine.labels.availability_zone == ${AWS_REGION}${DESIRED_WORKER_ID}
+1 −0
Original line number Diff line number Diff line
version: '3.5'
+56 −0
Original line number Diff line number Diff line
version: '3.5'

services:
  backup-db:
    image: ${BACKUP_DB_IMAGE_NAME:-registry.gitlab.com/redmic-project/postgres/backup-db}:${BACKUP_DB_IMAGE_TAG:-latest}
    build:
      context: ..
      dockerfile: ${DOCKERFILE:-Dockerfile}
      args:
        ALPINE_IMAGE_TAG:
        POSTGRES_PASS_FILE:
        POSTGRES_DUMP_PATH:
        CURL_VERSION:
        POSTGRESQL_CLIENT_VERSION:
        BASH_VERSION:
        GLIBC_VER:
        AWS_CLI_VERSION:
    environment:
      POSTGRES_USER:
      POSTGRES_PASSWORD:
      POSTGRES_HOSTNAME:
      POSTGRES_PORT:
      BUCKET_BACKUP_DB:
      AWS_ACCESS_KEY_ID:
      AWS_SECRET_ACCESS_KEY:
      AWS_DEFAULT_REGION:
      AWS_OUTPUT:
      PUSHGATEWAY_HOST:
      PUSHGATEWAY_JOB:
    networks:
      postgres-net:
      metric-net:
    deploy:
      mode: replicated
      replicas: ${BACKUP_DB_REPLICAS:-1}
      restart_policy:
        condition: on-failure
        delay: ${BACKUP_DB_RESTART_DELAY:-30s}
      resources:
        limits:
          cpus: '${BACKUP_DB_RESOURCES_LIMITS_CPUS:-0.5}'
          memory: ${BACKUP_DB_RESOURCES_LIMITS_MEMORY:-256M}
        reservations:
          cpus: '${BACKUP_DB_RESOURCES_RESERVATIONS_CPUS:-0.001}'
          memory: ${BACKUP_DB_RESOURCES_RESERVATIONS_MEMORY:-64M}

networks:
  postgres-net:
    name: ${POSTGRES_NET_NAME}
    driver: ${POSTGRES_NET_DRIVER:-overlay}
    external: true

  metric-net:
    name: ${METRIC_NET_NAME:-metric-net}
    driver: ${METRIC_NET_DRIVER:-overlay}
    external: true