Skip to content
Snippets Groups Projects
docker-compose.armhf.yml 5.91 KiB
Newer Older
  • Learn to ignore specific revisions
  • version: "3.3"
    
    Alex Ellis's avatar
    Alex Ellis committed
    services:
        gateway:
            ports:
                - 8080:8080
    
            image: openfaas/gateway:0.9.10-armhf
    
    Alex Ellis's avatar
    Alex Ellis committed
            networks:
                - functions
    
            environment:
    
                functions_provider_url: "http://faas-swarm:8080/"
    
    Alex Ellis (VMware)'s avatar
    Alex Ellis (VMware) committed
                read_timeout:  "305s"        # Maximum time to read HTTP request
                write_timeout: "305s"        # Maximum time to write HTTP response
                upstream_timeout: "300s"     # Maximum duration of upstream function call - should be more than read_timeout and write_timeout            dnsrr: "true"  # Temporarily use dnsrr in place of VIP while issue persists on PWD
    
                faas_nats_address: "nats"
                faas_nats_port: 4222
    
                direct_functions: "true"    # Functions are invoked directly over the overlay network
                direct_functions_suffix: ""
    
                basic_auth: "${BASIC_AUTH:-true}"
    
                secret_mount_path: "/run/secrets/"
    
                scale_from_zero: "true"
    
    Alex Ellis's avatar
    Alex Ellis committed
            deploy:
    
                resources:
    
    Alex Ellis's avatar
    Alex Ellis committed
                    # limits:   # uncomment to enable limits
                    #     memory: 100M
    
                    reservations:
    
    Alex Ellis's avatar
    Alex Ellis committed
                        memory: 100M
    
                restart_policy:
                    condition: on-failure
                    delay: 5s
                    max_attempts: 20
                    window: 380s
    
    Alex Ellis's avatar
    Alex Ellis committed
                placement:
    
                    constraints:
                        - 'node.platform.os == linux'
    
            secrets:
                - basic-auth-user
                - basic-auth-password
    
    
    Alex Ellis's avatar
    Alex Ellis committed
    
    
        # Docker Swarm provider
        faas-swarm:
    
            image:  openfaas/faas-swarm:0.5.0-armhf
    
    Alex Ellis's avatar
    Alex Ellis committed
            volumes:
    
                - "/var/run/docker.sock:/var/run/docker.sock"
            networks:
                - functions
            environment:
    
    Alex Ellis (VMware)'s avatar
    Alex Ellis (VMware) committed
                read_timeout:  "305s"   # set both here, and on your functions
                write_timeout: "305s"   # set both here, and on your functions
    
                DOCKER_API_VERSION: "1.30"
    
                basic_auth: "${BASIC_AUTH:-true}"
                secret_mount_path: "/run/secrets/"
    
            deploy:
                placement:
                    constraints:
                        - 'node.role == manager'
                        - 'node.platform.os == linux'
                resources:
    
    Alex Ellis's avatar
    Alex Ellis committed
                    # limits:   # uncomment to enable limits
                    #     memory: 100M
    
                    reservations:
    
    Alex Ellis's avatar
    Alex Ellis committed
                        memory: 100M
    
                restart_policy:
                    condition: on-failure
                    delay: 5s
                    max_attempts: 20
                    window: 380s
    
            secrets:
                - basic-auth-user
                - basic-auth-password
    
    
            image: nats-streaming:0.11.2
    
            # Uncomment the following port mappings if you wish to expose the
            # NATS client and/or management ports you must also add `-m 8222` to the command
    
            # ports:
            #     - 4222:4222
            #     - 8222:8222
            command: "--store memory --cluster_id faas-cluster"
            networks:
                - functions
            deploy:
                resources:
                    limits:
                        memory: 125M
                    reservations:
                        memory: 50M
                placement:
                    constraints:
                        - 'node.platform.os == linux'
    
    Alex Ellis's avatar
    Alex Ellis committed
    
    
        queue-worker:
    
            image: openfaas/queue-worker:0.5.3-armhf
    
            networks:
                - functions
            environment:
                max_inflight: "1"
    
                ack_wait: "30s"    # Max duration of any async task / request
    
    Alex Ellis (VMware)'s avatar
    Alex Ellis (VMware) committed
                basic_auth: "false"
                secret_mount_path: "/run/secrets/"
    
            deploy:
                resources:
                    limits:
                        memory: 50M
                    reservations:
                        memory: 20M
                restart_policy:
                    condition: on-failure
                    delay: 5s
                    max_attempts: 20
                    window: 380s
                placement:
                    constraints:
                        - 'node.platform.os == linux'
        # End services
    
        # Start monitoring
    
        prometheus:
            image: alexellis2/prometheus:2.0-armhf
            environment:
                no_proxy: "gateway"
            configs:
              - source: prometheus_config
                target: /etc/prometheus/prometheus.yml
              - source: prometheus_rules
                target: /etc/prometheus/alert.rules.yml
            command:
              - '--config.file=/etc/prometheus/prometheus.yml'
            #   - '-storage.local.path=/prometheus'
    
    Alex Ellis's avatar
    Alex Ellis committed
            ports:
                - 9090:9090
            networks:
                - functions
            deploy:
                placement:
    
                    constraints:
                        - 'node.role == manager'
                        - 'node.platform.os == linux'
                resources:
                    limits:
                        memory: 500M
                    reservations:
                        memory: 200M
    
    Alex Ellis's avatar
    Alex Ellis committed
    
        alertmanager:
    
    Alex Ellis's avatar
    Alex Ellis committed
            image: alexellis2/alertmanager-armhf:0.5.1
    
    Alex Ellis's avatar
    Alex Ellis committed
            environment:
    
                no_proxy: "gateway"
    
    Alex Ellis's avatar
    Alex Ellis committed
            command:
                - '-config.file=/alertmanager.yml'
            networks:
                - functions
    
            # Uncomment the following port mapping if you wish to expose the Prometheus
            # Alertmanager UI.
            # ports:
            #     - 9093:9093
    
    Alex Ellis's avatar
    Alex Ellis committed
            deploy:
    
                resources:
                    limits:
                        memory: 50M
                    reservations:
                        memory: 20M
    
    Alex Ellis's avatar
    Alex Ellis committed
                placement:
    
                    constraints:
    
                        - 'node.role == manager'
                        - 'node.platform.os == linux'
            configs:
                - source: alertmanager_config
                  target: /alertmanager.yml
    
    Alex Ellis's avatar
    Alex Ellis committed
    
    
    configs:
         prometheus_config:
             file: ./prometheus/prometheus.yml
         prometheus_rules:
             file: ./prometheus/alert.rules.yml
         alertmanager_config:
             file: ./prometheus/alertmanager.yml
    
    
    Alex Ellis's avatar
    Alex Ellis committed
    networks:
        functions:
            driver: overlay
    
            attachable: true
    
              - "openfaas=true"
    
    
    secrets:
        basic-auth-user:
            external: true
        basic-auth-password:
            external: true