blob: 3060f2f8d0431b335f75991a444644e8e35601fb [file] [log] [blame]
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
# KAFKA SERVICES
zookeeper:
image: zookeeper:3.4
ports:
- "2181:2181"
- "2888:2888"
- "3888:3888"
environment:
ZOO_SERVERS: server.1=0.0.0.0:2888:3888
ZOO_MY_ID: 1
kafka:
image: wurstmeister/kafka:0.11.0.1
links:
- zookeeper
depends_on:
- zookeeper
ports:
- "9092:9092"
environment:
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_HOST_NAME: kafka
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ~/tmp/openwhisk/kafka:/kafka: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"
links:
- db:db.docker
- kafka:kafka.docker
- zookeeper:zookeeper.docker
depends_on:
- db
- kafka
env_file:
- ./docker-whisk-controller.env # env vars shared
- ~/tmp/openwhisk/local.env # generated during make setup
environment:
COMPONENT_NAME: controller
PORT: 8888
KAFKA_HOSTS: kafka.docker:9092
ZOOKEEPER_HOSTS: zookeeper.docker:2181
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_remote_netty_tcp_hostname: controller
CONFIG_akka_remote_netty_tcp_port: 2551
CONFIG_akka_remote_netty_tcp_bindPort: 2551
CONFIG_akka_actor_provider: cluster
LOADBALANCER_HOST: ${DOCKER_COMPOSE_HOST}
LOADBALANCER_HOST_PORT: 443
volumes:
- ~/tmp/openwhisk/controller/logs:/logs
ports:
- "8888:8888"
- "2551:2551"
- "9222:9222"
# WHISK INVOKER AGENT
invoker:
image: ${DOCKER_IMAGE_PREFIX:-openwhisk}/invoker
command: /bin/sh -c "exec /init.sh --id 0 >> /logs/invoker-local_logs.log 2>&1"
privileged: true
pid: "host"
userns_mode: "host"
links:
- db:db.docker
- kafka:kafka.docker
- zookeeper:zookeeper.docker
depends_on:
- db
- kafka
env_file:
- ./docker-whisk-controller.env # env vars shared
- ~/tmp/openwhisk/local.env # generated during make setup
environment:
COMPONENT_NAME: invoker
SERVICE_NAME: invoker0
PORT: 8085
KAFKA_HOSTS: kafka.docker:9092
ZOOKEEPER_HOSTS: zookeeper.docker:2181
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
EDGE_HOST: ${DOCKER_COMPOSE_HOST}
EDGE_HOST_APIPORT: 443
CONFIG_whisk_containerFactory_containerArgs_network: openwhisk_default
WHISK_API_HOST_NAME: ${DOCKER_COMPOSE_HOST}
volumes:
- ~/tmp/openwhisk/invoker/logs:/logs
- /var/run/docker.sock:/var/run/docker.sock
- /var/lib/docker/containers:/containers
- /sys/fs/cgroup:/sys/fs/cgroup
ports:
- "8085:8085"
- "9333: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"
kafka-rest:
image: confluentinc/cp-kafka-rest:3.3.1
hostname: kafka-rest
environment:
- ACCESS_CONTROL_ALLOW_ORIGIN_DEFAULT="*"
- KAFKA_REST_ZOOKEEPER_CONNECT=zookeeper:2181
- KAFKA_REST_HOST_NAME=kafka-rest
- KAFKA_REST_LISTENERS=http://kafka-rest:8082
- KAFKA_REST_CONSUMER_REQUEST_TIMEOUT_MS=30000
- KAFKA_REST_BOOTSTRAP_SERVERS=PLAINTEXT://kafka:9092
links:
- zookeeper
- kafka
depends_on:
- zookeeper
- kafka
kafka-topics-ui:
image: landoop/kafka-topics-ui:0.9.3
environment:
- KAFKA_REST_PROXY_URL=http://kafka-rest:8082
- KAFKA_REST_BOOTSTRAP_SERVERS=PLAINTEXT://kafka:9092
- PROXY=true
ports:
- 8001:8000
links:
- kafka
- kafka-rest