EOX GitLab Instance

Skip to content
Snippets Groups Projects
docker-compose.emg.staging.yml 13.65 KiB
version: "3.6"
services:
  database:
    volumes:
      - type: tmpfs
        target: /dev/shm
        tmpfs:
          size: 536870912
  renderer:
    image: registry.gitlab.eox.at/esa/prism/vs/pvs_core:staging
    environment:
      INSTALL_DIR: "/var/www/pvs/ops/"
      INSTANCE_DIR: "/var/www/pvs/ops/pvs_instance/"
    deploy:
      labels:
        # router for shib auth based access (https)
        - "traefik.http.routers.emg-renderer-shib.rule=Host(`emg.pass.copernicus.eu`) && PathPrefix(`/ows`, `/opensearch`, `/admin`)"
        - "traefik.http.middlewares.emg-renderer-shib-fa.forwardauth.address=http://shibauth-emg/secure"
        - "traefik.http.routers.emg-renderer-shib.middlewares=emg-renderer-shib-fa,compress@file,cors@file"
        - "traefik.http.routers.emg-renderer-shib.tls=true"
        - "traefik.http.routers.emg-renderer-shib.tls.certresolver=default"
        - "traefik.http.routers.emg-renderer-shib.entrypoints=https"
        # router for shib auth based access (http)
        - "traefik.http.routers.emg-renderer-redirect-shib.rule=Host(`emg.pass.copernicus.eu`) && PathPrefix(`/ows`, `/opensearch`, `/admin`)"
        - "traefik.http.routers.emg-renderer-redirect-shib.middlewares=redirect@file"
        - "traefik.http.routers.emg-renderer-redirect-shib.entrypoints=http"
        # router for internal proxy based access (https)
        - "traefik.http.middlewares.emg-pass-whitelist.ipwhitelist.sourcerange=178.248.89.10"
        - "traefik.http.middlewares.emg-renderer-proxy-fa.forwardauth.address=http://shibauth-emg/proxy-renderer"
        - "traefik.http.routers.emg-renderer-proxy.rule=Host(`proxy.emg.pass.copernicus.eu`) && PathPrefix(`/ows`, `/opensearch`, `/admin`)"
        - "traefik.http.routers.emg-renderer-proxy.middlewares=emg-pass-whitelist,emg-renderer-proxy-fa,compress@file,cors@file"
        - "traefik.http.routers.emg-renderer-proxy.tls=true"
        - "traefik.http.routers.emg-renderer-proxy.tls.certresolver=default"
        - "traefik.http.routers.emg-renderer-proxy.entrypoints=https"
        # router for internal proxy based access (http)
        - "traefik.http.routers.emg-renderer-redirect-proxy.rule=Host(`proxy.emg.pass.copernicus.eu`) && PathPrefix(`/ows`, `/opensearch`, `/admin`)"
        - "traefik.http.routers.emg-renderer-redirect-proxy.middlewares=emg-pass-whitelist,redirect@file"
        - "traefik.http.routers.emg-renderer-redirect-proxy.entrypoints=http"
        # router for basic auth based access (https)
        - "traefik.http.routers.emg-renderer.rule=Host(`emg.pdas.prism.eox.at`, `a.emg.pdas.prism.eox.at`, `b.emg.pdas.prism.eox.at`, `c.emg.pdas.prism.eox.at`, `d.emg.pdas.prism.eox.at`, `e.emg.pdas.prism.eox.at`, `f.emg.pdas.prism.eox.at`, `g.emg.pdas.prism.eox.at`, `h.emg.pdas.prism.eox.at`) && PathPrefix(`/ows`, `/opensearch`, `/admin`)"
        - "traefik.http.routers.emg-renderer.middlewares=auth@file,compress@file,cors@file"
        - "traefik.http.routers.emg-renderer.tls=true"
        - "traefik.http.routers.emg-renderer.tls.certresolver=default"
        - "traefik.http.routers.emg-renderer.entrypoints=https"
        # router for basic auth based access (http)
        - "traefik.http.routers.emg-renderer-redirect.rule=Host(`emg.pdas.prism.eox.at`, `a.emg.pdas.prism.eox.at`, `b.emg.pdas.prism.eox.at`, `c.emg.pdas.prism.eox.at`, `d.emg.pdas.prism.eox.at`, `e.emg.pdas.prism.eox.at`, `f.emg.pdas.prism.eox.at`, `g.emg.pdas.prism.eox.at`, `h.emg.pdas.prism.eox.at`) && PathPrefix(`/ows`, `/opensearch`, `/admin`)"
        - "traefik.http.routers.emg-renderer-redirect.middlewares=redirect@file"
        - "traefik.http.routers.emg-renderer-redirect.entrypoints=http"
        # general
        - "traefik.http.services.emg-renderer.loadbalancer.sticky=false"
        - "traefik.http.services.emg-renderer.loadbalancer.server.port=80"
        - "traefik.docker.network=emg-extnet"
        - "traefik.docker.lbswarm=true"
        - "traefik.enable=true"
      replicas: 1
      resources:
        limits:
          memory: 8G
    networks:
      - extnet
  cache:
    image: registry.gitlab.eox.at/esa/prism/vs/pvs_cache:staging
    configs:
      - source: mapcache-ops
        target: /mapcache-template.xml
    deploy:
      labels:
        - "traefik.http.middlewares.cache-stripprefix.stripprefix.prefixes=/cache"
        # router for shib auth based access (https)
        - "traefik.http.routers.emg-cache-shib.rule=Host(`emg.pass.copernicus.eu`) && PathPrefix(`/cache`)"
        - "traefik.http.routers.emg-cache-shib.middlewares=emg-cache-shib-chain"
        - "traefik.http.middlewares.emg-cache-shib-fa.forwardauth.address=http://shibauth-emg/secure"
        - "traefik.http.middlewares.emg-cache-shib-chain.chain.middlewares=emg-cache-shib-fa,cache-stripprefix,compress@file,cors@file"
        - "traefik.http.routers.emg-cache-shib.tls=true"
        - "traefik.http.routers.emg-cache-shib.tls.certresolver=default"
        - "traefik.http.routers.emg-cache-shib.entrypoints=https"
        # router for shib auth based access (http)
        - "traefik.http.routers.emg-cache-redirect-shib.rule=Host(`emg.pass.copernicus.eu`) && PathPrefix(`/cache`)"
        - "traefik.http.routers.emg-cache-redirect-shib.middlewares=redirect@file"
        - "traefik.http.routers.emg-cache-redirect-shib.entrypoints=http"
        # router for internal proxy based access (https)
        - "traefik.http.middlewares.emg-pass-whitelist-cache.ipwhitelist.sourcerange=178.248.89.10"
        - "traefik.http.routers.emg-cache-proxy.rule=Host(`proxy.emg.pass.copernicus.eu`) && PathPrefix(`/cache`)"
        - "traefik.http.middlewares.emg-cache-proxy-fa.forwardauth.address=http://shibauth-emg/proxy-cache"
        - "traefik.http.routers.emg-cache-shib.middlewares=emg-cache-proxy-chain"
        - "traefik.http.middlewares.emg-cache-proxy-chain.chain.middlewares=emg-pass-whitelist-cache,emg-cache-proxy-fa,cache-stripprefix,compress@file,cors@file"
        - "traefik.http.routers.emg-cache-proxy.tls=true"
        - "traefik.http.routers.emg-cache-proxy.tls.certresolver=default"
        - "traefik.http.routers.emg-cache-proxy.entrypoints=https"
        # router for internal proxy based access (http)
        - "traefik.http.routers.emg-cache-redirect-proxy.rule=Host(`proxy.emg.pass.copernicus.eu`) && PathPrefix(`/cache`)"
        - "traefik.http.routers.emg-cache-redirect-proxy.middlewares=emg-pass-whitelist-cache,redirect@file"
        - "traefik.http.routers.emg-cache-redirect-proxy.entrypoints=http"
        # router for basic auth based access (https)
        - "traefik.http.routers.emg-cache.rule=Host(`emg.pdas.prism.eox.at`, `a.emg.pdas.prism.eox.at`, `b.emg.pdas.prism.eox.at`, `c.emg.pdas.prism.eox.at`, `d.emg.pdas.prism.eox.at`, `e.emg.pdas.prism.eox.at`, `f.emg.pdas.prism.eox.at`, `g.emg.pdas.prism.eox.at`, `h.emg.pdas.prism.eox.at`) && PathPrefix(`/cache`)"
        - "traefik.http.routers.emg-cache.middlewares=auth@file,cache-stripprefix,compress@file,cors@file"
        - "traefik.http.routers.emg-cache.tls=true"
        - "traefik.http.routers.emg-cache.tls.certresolver=default"
        - "traefik.http.routers.emg-cache.entrypoints=https"
        # router for basic auth based access (http)
        - "traefik.http.routers.emg-cache-redirect.rule=Host(`emg.pdas.prism.eox.at`, `a.emg.pdas.prism.eox.at`, `b.emg.pdas.prism.eox.at`, `c.emg.pdas.prism.eox.at`, `d.emg.pdas.prism.eox.at`, `e.emg.pdas.prism.eox.at`, `f.emg.pdas.prism.eox.at`, `g.emg.pdas.prism.eox.at`, `h.emg.pdas.prism.eox.at`) && PathPrefix(`/cache`)"
        - "traefik.http.routers.emg-cache-redirect.middlewares=redirect@file"
        - "traefik.http.routers.emg-cache-redirect.entrypoints=http"
        # general
        - "traefik.http.services.emg-cache.loadbalancer.sticky=false"
        - "traefik.http.services.emg-cache.loadbalancer.server.port=80"
        - "traefik.docker.network=emg-extnet"
        - "traefik.docker.lbswarm=true"
        - "traefik.enable=true"
      replicas: 1
      resources:
        limits:
          memory: 8G
    networks:
      - extnet
  registrar:
    image: registry.gitlab.eox.at/esa/prism/vs/pvs_core:staging
    environment:
      INSTALL_DIR: "/var/www/pvs/ops/"
      INSTANCE_DIR: "/var/www/pvs/ops/pvs_instance/"
      UPLOAD_CONTAINER: "emg-data-staging"
    deploy:
      replicas: 1
  ingestor:
    image: registry.gitlab.eox.at/esa/prism/vs/pvs_ingestor:staging
    environment:
      REDIS_PREPROCESS_MD_QUEUE_KEY: "preprocess_queue"
  sftp:
    image: registry.gitlab.eox.at/esa/prism/vs/pvs_sftp:staging
  client:
    image: registry.gitlab.eox.at/esa/prism/vs/pvs_client:staging
    configs:
      - source: client-ops
        target: /usr/share/nginx/html/index.html
    deploy:
      labels:
        # router for shib auth based access (https)
        - "traefik.http.routers.emg-client-shib.rule=Host(`emg.pass.copernicus.eu`)"
        - "traefik.http.middlewares.emg-client-shib-fa.forwardauth.address=http://shibauth-emg/secure"
        - "traefik.http.routers.emg-client-shib.middlewares=emg-client-shib-fa,compress@file"
        - "traefik.http.routers.emg-client-shib.tls=true"
        - "traefik.http.routers.emg-client-shib.tls.certresolver=default"
        - "traefik.http.routers.emg-client-shib.entrypoints=https"
        # router for shib auth based access (http)
        - "traefik.http.routers.emg-client-redirect-shib.rule=Host(`emg.pass.copernicus.eu`)"
        - "traefik.http.routers.emg-client-redirect-shib.middlewares=redirect@file"
        - "traefik.http.routers.emg-client-redirect-shib.entrypoints=http"
        # router for basic auth based access (https)
        - "traefik.http.routers.emg-client.rule=Host(`emg.pdas.prism.eox.at`)"
        - "traefik.http.routers.emg-client.middlewares=auth@file,compress@file"
        - "traefik.http.routers.emg-client.tls=true"
        - "traefik.http.routers.emg-client.tls.certresolver=default"
        - "traefik.http.routers.emg-client.entrypoints=https"
        # router for basic auth based access (http)
        - "traefik.http.routers.emg-client-redirect.rule=Host(`emg.pdas.prism.eox.at`)"
        - "traefik.http.routers.emg-client-redirect.middlewares=redirect@file"
        - "traefik.http.routers.emg-client-redirect.entrypoints=http"
        # general
        - "traefik.http.services.emg-client.loadbalancer.sticky=false"
        - "traefik.http.services.emg-client.loadbalancer.server.port=80"
        - "traefik.docker.network=emg-extnet"
        - "traefik.docker.lbswarm=true"
        - "traefik.enable=true"
    networks:
      - extnet
  preprocessor:
    image: registry.gitlab.eox.at/esa/prism/vs/pvs_preprocessor:staging
    volumes:
      - type: bind
        source: /var/vhr
        target: /tmp
    deploy:
      replicas: 1
    environment:
      UPLOAD_CONTAINER: "emg-data-staging"
  shibauth-emg:
    image: registry.gitlab.eox.at/esa/prism/vs/pvs_shibauth:staging
    environment:
      APACHE_SERVERNAME: "https://emg.pass.copernicus.eu:443"
      PROXY_USER_CATEGORY_ALLOW_RENDERER: "(Copernicus_Services|Union_Inst|Union_Research_Projects_space|Union_Research_Projects_non-space|Public_Auth|CDS Operations)"
      PROXY_USER_CATEGORY_ALLOW_CACHE: "(Copernicus_Services|Union_Inst|Union_Research_Projects_space|Union_Research_Projects_non-space|Public_Auth|CDS Operations)"
    secrets:
      - source: EMG_SHIB_CERT
        target: SHIB_CERT
      - source: EMG_SHIB_KEY
        target: SHIB_KEY
      - BASIC_AUTH_USERS_AUTH
    deploy:
      replicas: 1
      labels:
        # router for basic auth based access (https)
        - "traefik.http.routers.emg-shibauth.rule=Host(`emg.pass.copernicus.eu`) && PathPrefix(`/Shibboleth.sso`)"
        - "traefik.http.routers.emg-shibauth.middlewares=compress@file,cors@file"
        - "traefik.http.routers.emg-shibauth.tls=true"
        - "traefik.http.routers.emg-shibauth.tls.certresolver=default"
        - "traefik.http.routers.emg-shibauth.entrypoints=https"
        # router for basic auth based access (http)
        - "traefik.http.routers.emg-shibauth-redirect.rule=Host(`emg.pass.copernicus.eu`) && PathPrefix(`/Shibboleth.sso`)"
        - "traefik.http.routers.emg-shibauth-redirect.middlewares=redirect@file"
        - "traefik.http.routers.emg-shibauth-redirect.entrypoints=http"
        # general
        - "traefik.http.services.emg-shibauth.loadbalancer.sticky=false"
        - "traefik.http.services.emg-shibauth.loadbalancer.server.port=80"
        - "traefik.docker.network=emg-extnet"
        - "traefik.docker.lbswarm=true"
        - "traefik.enable=true"
    networks:
      - extnet
    configs:
      - source: shib-access-control-conf
        target: /etc/shibboleth/pass-ac.xml
      - source: shib-access-control-conf-cache
        target: /etc/shibboleth/pass-ac-cache.xml
      - source: shib-shibboleth2
        target: /etc/shibboleth/shibboleth2.xml
      - source: shib-apache
        target: /etc/httpd/conf.d/shib.conf
      - source: shib-attribute-map
        target: /etc/shibboleth/attribute-map.xml
      - source: idp-metadata
        target: /etc/shibboleth/idp-metadata.xml
      - source: shibd-logger
        target: /etc/shibboleth/shibd.logger
      - source: native-logger
        target: /etc/shibboleth/native.logger
networks:
  extnet:
    name: emg-extnet
    external: true
configs:
  shib-access-control-conf:
    file: ./config/shibboleth/emg-ac.xml
  shib-access-control-conf-cache:
    file: ./config/shibboleth/emg-ac-cache.xml
  shib-shibboleth2:
    file: ./config/shibboleth/emg-shibboleth2.xml
  shib-apache:
    file: ./config/shibboleth/shib-apache.conf
  shib-attribute-map:
    file: ./config/shibboleth/attribute-map.xml
  native-logger:
    file: ./config/shibboleth/native.logger
  shibd-logger:
    file: ./config/shibboleth/shibd.logger
  idp-metadata:
    external: true
secrets:
  EMG_SHIB_CERT:
    external: true
  EMG_SHIB_KEY:
    external: true
  BASIC_AUTH_USERS_AUTH:
    external: true