Skip to content
Snippets Groups Projects
docker-compose.yml 5.51 KiB
Newer Older
services:
    gateway:
        volumes:
            - "/var/run/docker.sock:/var/run/docker.sock"
        ports:
Alex Ellis's avatar
Alex Ellis committed
            - 8080:8080
        image: functions/gateway:0.6.7
        networks:
Alex Ellis's avatar
Alex Ellis committed
        environment:
            dnsrr: "true"  # Temporarily use dnsrr in place of VIP while issue persists on PWD
Alex Ellis's avatar
Alex Ellis committed
        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
        environment:
            no_proxy: "gateway"
        networks:
            - functions
Alex's avatar
Alex committed
        deploy:
            placement:
                constraints:
                    - 'node.role == manager'
                    - 'node.platform.os == linux'
Alex's avatar
Alex committed

        image: functions/alertmanager:latest    # autobuild from Dockerfile in repo.
            no_proxy: "gateway"
Alex Ellis's avatar
Alex Ellis committed
#        volumes:
#            - ./prometheus/alertmanager.yml:/alertmanager.yml
        command:
            - '-config.file=/alertmanager.yml'
        networks:
            - functions
        ports:
            - 9093:9093
Alex's avatar
Alex committed
        deploy:
            placement:
                constraints:
                    - 'node.role == manager'
                    - 'node.platform.os == linux'
Alex Ellis's avatar
Alex Ellis committed
    # Sample functions go here.
Alex Ellis's avatar
Alex Ellis committed
    # Service label of "function" allows functions to show up in UI on http://gateway:8080/
    webhookstash:
        image: functions/webhookstash:latest
Alex Ellis's avatar
Alex Ellis committed
        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.
Alex Ellis's avatar
Alex Ellis committed
    hubstats:
        image: functions/hubstats:latest
Alex Ellis's avatar
Alex Ellis committed
        labels:
            function: "true"
Alex Ellis's avatar
Alex Ellis committed
        depends_on:
            - gateway
        networks:
            - functions
        environment:
            no_proxy: "gateway"
Alex Ellis's avatar
Alex Ellis committed
            https_proxy: $https_proxy
        deploy:
            placement:
                constraints:
                    - 'node.platform.os == linux'

Alex Ellis's avatar
Alex Ellis committed

    # Node.js gives OS info about the node (Host)
Alex Ellis's avatar
Alex Ellis committed
    nodeinfo:
        image: functions/nodeinfo:latest
Alex Ellis's avatar
Alex Ellis committed
        labels:
            function: "true"
Alex Ellis's avatar
Alex Ellis committed
        depends_on:
            - gateway
        networks:
            - functions
        environment:
            no_proxy: "gateway"
Alex Ellis's avatar
Alex Ellis committed
            https_proxy: $https_proxy
        deploy:
            placement:
                constraints:
                    - 'node.platform.os == linux'

Alex Ellis's avatar
Alex Ellis committed

    # Uses `cat` to echo back response, fastest function to execute.
        image: functions/alpine:latest
Alex Ellis's avatar
Alex Ellis committed
        labels:
            function: "true"
        depends_on:
            - gateway
        networks:
            - functions
        environment:
            fprocess: "cat"
            no_proxy: "gateway"
        deploy:
            placement:
                constraints:
                    - 'node.platform.os == linux'

    # Counts words in request with `wc` utility
        image: functions/alpine:latest
Alex Ellis's avatar
Alex Ellis committed
        labels:
            function: "true"
        depends_on:
            - gateway
        networks:
            - functions
        environment:
            fprocess: "wc"
            no_proxy: "gateway"
        deploy:
            placement:
                constraints:
                    - 'node.platform.os == linux'

    # Calculates base64 representation of request body.
    base64:
        image: functions/alpine:latest
        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:latest
        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)
Alex Ellis's avatar
Alex Ellis committed
    markdown:
        image: alexellis2/faas-markdownrender:latest
Alex Ellis's avatar
Alex Ellis committed
        labels:
            function: "true"
Alex Ellis's avatar
Alex Ellis committed
        depends_on:
            - gateway
        networks:
            - functions
        environment:
            no_proxy: "gateway"
Alex Ellis's avatar
Alex Ellis committed
            https_proxy: $https_proxy
        deploy:
            placement:
                constraints:
                    - 'node.platform.os == linux'
networks:
    functions:
        driver: overlay
        #attachable: true