version: "3.3" services: gateway: volumes: - "/var/run/docker.sock:/var/run/docker.sock" ports: - 8080:8080 image: functions/gateway:0.6.6d networks: - functions environment: dnsrr: "true" # Temporarily use dnsrr in place of VIP while issue persists on PWD deploy: placement: constraints: - 'node.role == manager' - 'node.platform.os == linux' prometheus: image: functions/prometheus:latest # autobuild from Dockerfile in repo. command: "-config.file=/etc/prometheus/prometheus.yml -storage.local.path=/prometheus -storage.local.memory-chunks=10000 --alertmanager.url=http://alertmanager:9093" ports: - 9090:9090 depends_on: - gateway - alertmanager environment: no_proxy: "gateway" networks: - functions deploy: placement: constraints: - 'node.role == manager' - 'node.platform.os == linux' alertmanager: image: functions/alertmanager:latest # autobuild from Dockerfile in repo. environment: no_proxy: "gateway" # volumes: # - ./prometheus/alertmanager.yml:/alertmanager.yml command: - '-config.file=/alertmanager.yml' networks: - functions ports: - 9093:9093 deploy: placement: constraints: - 'node.role == manager' - 'node.platform.os == linux' # Sample functions go here. # Service label of "function" allows functions to show up in UI on http://gateway:8080/ webhookstash: image: functions/webhookstash:latest labels: function: "true" depends_on: - gateway networks: - functions environment: no_proxy: "gateway" https_proxy: $https_proxy deploy: placement: constraints: - 'node.platform.os == linux' # Pass a username as an argument to find how many images user has pushed to Docker Hub. hubstats: image: functions/hubstats:latest labels: function: "true" depends_on: - gateway networks: - functions environment: no_proxy: "gateway" https_proxy: $https_proxy deploy: placement: constraints: - 'node.platform.os == linux' # Node.js gives OS info about the node (Host) nodeinfo: image: functions/nodeinfo:latest labels: function: "true" depends_on: - gateway networks: - functions environment: no_proxy: "gateway" https_proxy: $https_proxy deploy: placement: constraints: - 'node.platform.os == linux' # Uses `cat` to echo back response, fastest function to execute. echoit: image: functions/alpine:health labels: function: "true" depends_on: - gateway networks: - functions environment: fprocess: "cat" no_proxy: "gateway" https_proxy: $https_proxy deploy: placement: constraints: - 'node.platform.os == linux' # Counts words in request with `wc` utility wordcount: image: functions/alpine:health labels: function: "true" com.faas.max_replicas: "10" depends_on: - gateway networks: - functions environment: fprocess: "wc" no_proxy: "gateway" https_proxy: $https_proxy deploy: placement: constraints: - 'node.platform.os == linux' # Calculates base64 representation of request body. base64: image: functions/alpine:health labels: function: "true" depends_on: - gateway networks: - functions environment: fprocess: "base64" no_proxy: "gateway" https_proxy: $https_proxy deploy: placement: constraints: - 'node.platform.os == linux' # Decodes base64 representation of request body. decodebase64: image: functions/alpine:health labels: function: "true" depends_on: - gateway networks: - functions environment: fprocess: "base64 -d" no_proxy: "gateway" https_proxy: $https_proxy deploy: placement: constraints: - 'node.platform.os == linux' # Converts body in (markdown format) -> (html) markdown: image: alexellis2/faas-markdownrender:latest labels: function: "true" depends_on: - gateway networks: - functions environment: no_proxy: "gateway" https_proxy: $https_proxy deploy: placement: constraints: - 'node.platform.os == linux' networks: functions: driver: overlay attachable: true