This is an automated email from the ASF dual-hosted git repository.

csantanapr pushed a commit to branch master
in repository 
https://gitbox.apache.org/repos/asf/incubator-openwhisk-devtools.git


The following commit(s) were added to refs/heads/master by this push:
     new 1e4cf0e  adding support for lean openwhisk setup (#220)
1e4cf0e is described below

commit 1e4cf0e077e44b8f1d0a5debcd43e0b7a89aa024
Author: Pavel Kravchenko <[email protected]>
AuthorDate: Tue Apr 2 07:56:04 2019 +0300

    adding support for lean openwhisk setup (#220)
---
 docker-compose/Makefile                |  24 +++++---
 docker-compose/README.md               |   8 +++
 docker-compose/docker-compose-lean.yml | 107 +++++++++++++++++++++++++++++++++
 3 files changed, 132 insertions(+), 7 deletions(-)

diff --git a/docker-compose/Makefile b/docker-compose/Makefile
index 033b329..ac9a4d4 100644
--- a/docker-compose/Makefile
+++ b/docker-compose/Makefile
@@ -26,6 +26,8 @@ WSK_CONFIG_FILE=$(CURDIR)/.wskprops
 OPEN_WHISK_DB_PREFIX ?= local_
 
 DOCKER_KERNEL ?= $(shell docker version --format "{{.Server.KernelVersion}}")
+DOCKER_COMPOSE_FILE=docker-compose.yml
+
 ifeq ("$(UNAME_STR)","Linux")
        DOCKER_BINARY ?= $(shell (which docker))
 else
@@ -41,6 +43,9 @@ endif
 #   3. it runs a sample hello-world function
 #   To stop and cleanup the environment use: make destroy
 
+lean:  DOCKER_COMPOSE_FILE=docker-compose-lean.yml
+lean:  download-src download-cli docker-pull-lean run hello-world 
quick-start-info
+
 quick-start: download-src download-cli docker-pull run quick-start-pause 
hello-world quick-start-info
 
 add-catalog: download-catalog init-catalog
@@ -104,14 +109,17 @@ docker-build:
        cd $(OPENWHISK_PROJECT_HOME) && \
                ./gradlew distDocker -PdockerImagePrefix=$(DOCKER_IMAGE_PREFIX)
 
-.PHONY: docker-pull
-docker-pull:
-       echo "pulling the docker images short list... "
+.PHONY: docker-pull-lean
+docker-pull-lean:
        docker pull $(DOCKER_IMAGE_PREFIX)/controller
-       docker pull $(DOCKER_IMAGE_PREFIX)/invoker
        docker pull $(DOCKER_IMAGE_PREFIX)/nodejs6action
        docker pull $(DOCKER_IMAGE_PREFIX)/dockerskeleton
 
+.PHONY: docker-pull
+docker-pull:   docker-pull-lean
+       echo "pulling the docker images short list... "
+       docker pull $(DOCKER_IMAGE_PREFIX)/invoker
+
 .PHONY: docker-pull-full
 docker-pull-full:
        echo "pulling the docker images full list ... "
@@ -213,6 +221,8 @@ setup:
        mkdir -p ~/tmp/openwhisk/minio
        cp -r ./apigateway/* ~/tmp/openwhisk/api-gateway-config/api-gateway/
        cp -r ./apigateway/rclone ~/tmp/openwhisk
+       
+ 
        $(shell cat ~/tmp/openwhisk/local.env) docker-compose --project-name 
openwhisk up minio 2>&1 > ~/tmp/openwhisk/setup.log &
        echo "pinging minio..."
        until (curl --silent http://$(DOCKER_HOST_IP):9001/ > /dev/null); do 
printf '.'; sleep 5; done
@@ -259,7 +269,7 @@ restart-invoker:
 
 .PHONY: start-docker-compose
 start-docker-compose:
-       $(shell cat ~/tmp/openwhisk/local.env) docker-compose --project-name 
openwhisk up --abort-on-container-exit 2>&1 > 
~/tmp/openwhisk/docker-compose.log &
+       $(shell cat ~/tmp/openwhisk/local.env) docker-compose --project-name 
openwhisk -f $(DOCKER_COMPOSE_FILE) up --abort-on-container-exit 2>&1 > 
~/tmp/openwhisk/docker-compose.log &
 
 .PHONY: wait-for-docker-compose-up
 wait-for-docker-compose-up:
@@ -268,7 +278,7 @@ wait-for-docker-compose-up:
        @trycount=0; \
        trycounttimeout=30; \
        up=`$(shell cat ~/tmp/openwhisk/local.env) docker-compose 
--project-name openwhisk ps | grep Up -c`; \
-       servicescount=`$(shell cat ~/tmp/openwhisk/local.env) docker-compose 
config --services | wc -l | xargs`; \
+       servicescount=`$(shell cat ~/tmp/openwhisk/local.env) docker-compose -f 
$(DOCKER_COMPOSE_FILE) config --services | wc -l | xargs`; \
        docker_ps() { \
                docker ps --format 'table {{.Image}}\t{{.Status}}' --filter 
"label=com.docker.compose.project=openwhisk" -a; \
        }; \
@@ -352,7 +362,7 @@ init-catalog:
 .PHONY: destroy
 destroy: stop rm
        echo "cleaning other OpenWhisk containers started by the invoker ... "
-       docker ps | grep whisk | awk '{print $$1}' | xargs docker stop | xargs 
docker rm
+       -docker ps | grep whisk | awk '{print $$1}' | xargs docker stop | xargs 
docker rm
        echo "cleaning dangling docker volumes ... "
        docker volume ls -qf dangling=true | xargs docker volume rm
        if [ "$(UNAME_STR)" = "Linux" ]; then \
diff --git a/docker-compose/README.md b/docker-compose/README.md
index cfabb8a..f2ac189 100644
--- a/docker-compose/README.md
+++ b/docker-compose/README.md
@@ -252,3 +252,11 @@ These 2 variable allow you to execute a JS action using 
the container `registry.
 By default this setup uses published images for controller and invokers from 
`openwhisk` namespace i.e.
 `openwhisk/controller` and `openwhisk/invoker`. To make use of locally build 
images you can use `DOCKER_IMAGE_PREFIX`
 variable i.e. `DOCKER_IMAGE_PREFIX=whisk make quick-start`
+
+## Lean setup
+
+To have a lean setup (no Kafka, Zookeeper and no Invokers as separate 
entities):
+
+```bash
+make lean
+```
diff --git a/docker-compose/docker-compose-lean.yml 
b/docker-compose/docker-compose-lean.yml
new file mode 100644
index 0000000..addb478
--- /dev/null
+++ b/docker-compose/docker-compose-lean.yml
@@ -0,0 +1,107 @@
+# 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.1
+    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
+    command: /bin/sh -c "exec /init.sh 0 >> 
/home/owuser/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:latest
+    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"

Reply via email to