x-base-script: &base-script
  build:
    context: .
    target: main
  volumes:
    - ~/.aws:/app/.aws
  environment:
    - ES_URL=https://vpc-dev-marketing-es-main-qj5c2bxpt75rjcvrv6cgu3lfwy.us-east-1.es.amazonaws.com/
    - ES_SNAPSHOT_REPO=manual
    - S3_BUCKET_NAME=dev-marketing-es-manual-snapshots
    - ES_SNAPSHOT_NAME=manual
    - ES_IAM_BACKUP_ROLE=arn:aws:iam::925412343888:role/dev-marketing-es_manual_backup_role
    - AWS_PROFILE=gdb-mct-dev
  restart: "no"

x-curl-base: &curl-base
  image: curlimages/curl
  restart: "no"
  depends_on:
    - elasticsearch

x-pg-base: &pg-base
  image: postgres:12.4-alpine
  volumes:
    - type: bind
      source: ./pg_backup
      target: /pg_backup
    - type: bind
      source: ~/.pgpass
      target: /root/.pgpass

version: '3.7'

services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2
    environment:
      - node.name=es01
      - cluster.name=docker-cluster
      - path.repo=/tmp/es-repo
      - network.host=0.0.0.0
      - discovery.zen.minimum_master_nodes=1
      - discovery.type=single-node
      - xpack.security.enabled=false
      - xpack.monitoring.enabled=false
      - xpack.ml.enabled=false
      - xpack.graph.enabled=false
      - xpack.watcher.enabled=false
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    volumes:
      -  ./es-repo:/tmp/es-repo
    restart: unless-stopped
    ulimits:
      memlock:
        soft: -1
        hard: -1
    healthcheck:
      test: "curl http://elasticsearch:9200"
      interval: "1s"
      timeout: "3s"
      retries: 60

  register-snapshot-repository-s3:
    <<: *base-script
    command: ['register']

  take-snapshot:
    <<: *base-script
    command: ['backup']

  restore-snapshot:
    <<: *base-script
    command: ['restore']

  register-snapshot-repository-local:
    <<: *curl-base
    command: "-X PUT -H 'Content-Type: application/json' -d '{\"type\":\"fs\",\"settings\":{\"location\":\"/tmp/es-repo\"}}' elasticsearch:9200/_snapshot/manual"

  restore-snapshot-local:
    <<: *curl-base
    command: "-X POST elasticsearch:9200/_snapshot/manual/manual/_restore"

  pg_dump_dev:
    <<: *pg-base
    command: "/bin/sh -c 'pg_dump -Ox -h dev-marketing-main.cluster-cs1ykas5awkh.us-east-1.rds.amazonaws.com -U main_admin -d main | gzip > /pg_backup/decibel_main.sql.gz'"

  pg_dump_qa:
    <<: *pg-base
    command: "/bin/sh -c 'pg_dump -Ox -h qa-marketing-main.cluster-cs1ykas5awkh.us-east-1.rds.amazonaws.com -U main_admin -d main | gzip > /pg_backup/decibel_main.sql.gz'"
