# Licensed to the Apache Software Foundation (ASF) under one or more contributor
# license agreements; and to You under the Apache License, Version 2.0.
version: '3'
services:
  db:
    image: apache/couchdb:2.3
    ports:
      - "5984:5984"
    environment:
      COUCHDB_USER: whisk_admin
      COUCHDB_PASSWORD: some_passw0rd
    volumes:
      - ~/tmp/openwhisk/couchdb:/usr/local/var/lib/couchdb:rw

  # WHISK CONTROLLER
  controller:
    image: ${DOCKER_IMAGE_PREFIX:-openwhisk}/controller:${DOCKER_IMAGE_TAG:-latest}
    command: /bin/sh -c "exec /init.sh 0 >> /logs/controller-local_logs.log 2>&1"
    privileged: true
    pid: "host"
    userns_mode: "host"
    links:
      - db:db.docker
    depends_on:
      - db
    env_file:
      - ./docker-whisk-controller.env   # env vars shared
      - ~/tmp/openwhisk/local.env       # generated during make setup
    environment:
      COMPONENT_NAME: controller
      PORT: 8888

      CONFIG_whisk_couchdb_provider: CouchDB
      CONFIG_whisk_couchdb_protocol: http
      CONFIG_whisk_couchdb_port: 5984
      CONFIG_whisk_couchdb_host: db.docker
      CONFIG_whisk_couchdb_username: whisk_admin
      CONFIG_whisk_couchdb_password: some_passw0rd

      CONFIG_akka_actor_provider: local

      LOADBALANCER_HOST: ${DOCKER_COMPOSE_HOST}
      LOADBALANCER_HOST_PORT: 443

      #invoker env
      EDGE_HOST: ${DOCKER_COMPOSE_HOST}
      EDGE_HOST_APIPORT: 443
      CONFIG_whisk_containerFactory_containerArgs_network: openwhisk_default
      WHISK_API_HOST_NAME: ${DOCKER_COMPOSE_HOST}

      #required by lean controller
      CONFIG_whisk_spi_MessagingProvider: org.apache.openwhisk.connector.lean.LeanMessagingProvider
      CONFIG_whisk_spi_LoadBalancerProvider: org.apache.openwhisk.core.loadBalancer.LeanBalancer
    volumes:
      - ~/tmp/openwhisk/controller/logs:/logs
      - /var/run/docker.sock:/var/run/docker.sock
      - /var/lib/docker/containers:/containers
      - /sys/fs/cgroup:/sys/fs/cgroup
    ports:
      - "8888:8888"
      - "9222:9222"

  # The API Gateway is currently used to expose the Controller API
  #   see apigateway/conf/whisk-docker-compose.conf
  # Minio is used to mock an object storage ( i.e. S3) that hosts the api-gateway configuration.
  # Minio also exposes a web UI to browse the files: http://localhost:9001/minio/api-gateway/
  minio:
    image: minio/minio:RELEASE.2018-07-13T00-09-07Z
    command:
      - server
      - /data
    environment:
      - MINIO_ACCESS_KEY=5VCTEQOQ0GR0NV1T67GN
      - MINIO_SECRET_KEY=8MBK5aJTR330V1sohz4n1i7W5Wv/jzahARNHUzi3
    volumes:
      - ~/tmp/openwhisk/minio:/data:rw
    ports:
      - "9001:9000"
  redis:
    image: redis:2.8
    ports:
      - "6379:6379"
  apigateway:
    image: openwhisk/apigateway:nightly
    links:
      - controller:whisk.controller
      - redis:redis.docker
      - minio:minio.docker
    environment:
      - REDIS_HOST=${DOCKER_COMPOSE_HOST}
      - REDIS_PORT=6379
      - PUBLIC_MANAGEDURL_PORT=9090
      - PUBLIC_MANAGEDURL_HOST=${DOCKER_COMPOSE_HOST}
      - REMOTE_CONFIG=minio:api-gateway
    depends_on:
      - controller
      - redis
      - minio
    volumes:
      - ~/tmp/openwhisk/api-gateway-ssl:/etc/ssl:ro
      - ~/tmp/openwhisk/api-gateway-config/api-gateway/generated-conf.d:/etc/api-gateway/generated-conf.d
      - ~/tmp/openwhisk/rclone:/root/.config/rclone:rw
    ports:
      - "80:80"
      - "443:443"
      - "9000:9000"
      - "9090:8080"
