diff --git a/contrib/golang/Dockerfile b/contrib/golang/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..40e72e2e02401c1649bb7946f73de43e76c06040 --- /dev/null +++ b/contrib/golang/Dockerfile @@ -0,0 +1,11 @@ +FROM debian:stretch + +RUN mkdir -p /usr/local/go +ENV PATH=$PATH:/usr/local/go/bin +RUN apt update && apt -qy install curl \ + && curl -SL https://storage.googleapis.com/golang/go1.9.linux-arm64.tar.gz > go1.9.linux-arm64.tar.gz \ + && tar -xvf go1.9.linux-arm64.tar.gz -C /usr/local/go --strip-components=1 + +RUN go version + +CMD ["/bin/sh"] diff --git a/contrib/prometheus/Dockerfile b/contrib/prometheus/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..ad9acb1f49890fc208e5493c4723fb0482f027ae --- /dev/null +++ b/contrib/prometheus/Dockerfile @@ -0,0 +1,28 @@ +FROM arm64v8/alpine:3.5 + +workdir /root +RUN apk add --update libarchive-tools + +ADD https://github.com/prometheus/prometheus/releases/download/v1.5.2/prometheus-1.5.2.linux-arm64.tar.gz /root/ +RUN bsdtar -xvf prometheus-*.tar.gz -C ./ --strip-components=1 + +RUN mkdir -p /usr/share/prometheus +RUN mkdir -p /etc/prometheus + +RUN cp prometheus /bin/prometheus +RUN cp promtool /bin/promtool +RUN cp prometheus.yml /etc/prometheus/prometheus.yml +RUN cp -r console_libraries/ /usr/share/prometheus/console_libraries/ +RUN cp -r consoles/ /usr/share/prometheus/consoles/ + +#RUN ln -s /usr/share/prometheus/console_libraries /usr/share/prometheus/consoles/ /etc/prometheus/ + +EXPOSE 9090 +VOLUME [ "/prometheus" ] +WORKDIR /prometheus +ENTRYPOINT [ "/bin/prometheus" ] +CMD [ "-config.file=/etc/prometheus/prometheus.yml", \ + "-storage.local.path=/prometheus", \ + "-web.console.libraries=/usr/share/prometheus/console_libraries", \ + "-web.console.templates=/usr/share/prometheus/consoles" ] + diff --git a/docker-compose.arm64.yml b/docker-compose.arm64.yml new file mode 100644 index 0000000000000000000000000000000000000000..a3272f8e2b7bed29d22048e468446518f807c481 --- /dev/null +++ b/docker-compose.arm64.yml @@ -0,0 +1,40 @@ +version: "3.2" +services: + gateway: + volumes: + - "/var/run/docker.sock:/var/run/docker.sock" + ports: + - 8080:8080 + image: alexellis2/gateway:0.6.6-beta-arm64 + 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: alexellis2/prometheus:1.5.2-arm64 + 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' + +networks: + functions: + driver: overlay + # Docker does not support this option yet - maybe create outside of the stack and reference as "external"? + #attachable: true diff --git a/gateway/Dockerfile.arm64 b/gateway/Dockerfile.arm64 new file mode 100644 index 0000000000000000000000000000000000000000..34abb09c98f655c5b3f080de07061652e6c52ddb --- /dev/null +++ b/gateway/Dockerfile.arm64 @@ -0,0 +1,30 @@ +FROM alexellis2/golang:1.9-arm64 as build +WORKDIR /go/src/github.com/alexellis/faas/gateway +ENV GOPATH=/go + +COPY vendor vendor + +COPY handlers handlers +COPY metrics metrics +COPY requests requests +COPY tests tests + +COPY types types +COPY queue queue +COPY plugin plugin +COPY server.go . + +RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o gateway . + +FROM debian:stretch +WORKDIR /root/ + +EXPOSE 8080 +ENV http_proxy "" +ENV https_proxy "" + +COPY --from=build /go/src/github.com/alexellis/faas/gateway/gateway . + +COPY assets assets + +CMD ["./gateway"] diff --git a/sample-functions/AlpineFunction/Dockerfile.arm64 b/sample-functions/AlpineFunction/Dockerfile.arm64 new file mode 100644 index 0000000000000000000000000000000000000000..bef4829172a1324333ab5f95d63ae557893b3c3b --- /dev/null +++ b/sample-functions/AlpineFunction/Dockerfile.arm64 @@ -0,0 +1,11 @@ +FROM arm64v8/alpine:3.6 + +ADD https://github.com/alexellis/faas/releases/download/0.6.5/fwatchdog-arm64 /usr/bin/fwatchdog +# COPY ./fwatchdog /usr/bin/ +RUN chmod +x /usr/bin/fwatchdog + +# Populate example here +# ENV fprocess="wc -l" + +HEALTHCHECK --interval=5s CMD [ -e /tmp/.lock ] || exit 1 +CMD ["fwatchdog"]