arm builds
diff --git a/apps/minio/Dockerfile b/apps/minio/Dockerfile
new file mode 100644
index 0000000..0f1c204
--- /dev/null
+++ b/apps/minio/Dockerfile
@@ -0,0 +1,25 @@
+FROM golang:1.13-alpine as builder
+
+WORKDIR /home
+
+ENV GOPATH /go
+ENV CGO_ENABLED 0
+ENV GO111MODULE on
+
+RUN go get github.com/minio/minio
+WORKDIR /go/pkg/mod/github.com/minio/minio@v0.0.0-20200426024807-6ecc98fddbfb
+RUN go build -tags kqueue -trimpath -o minio
+
+FROM arm32v7/alpine:3.11
+COPY --from=builder /go/pkg/mod/github.com/minio/minio@v0.0.0-20200426024807-6ecc98fddbfb/minio /usr/bin/
+COPY --from=builder /go/pkg/mod/github.com/minio/minio@v0.0.0-20200426024807-6ecc98fddbfb/dockerscripts/docker-entrypoint.sh /usr/bin/
+RUN chmod +x /usr/bin/minio
+RUN chmod +x /usr/bin/docker-entrypoint.sh
+
+EXPOSE 9000
+
+ENTRYPOINT ["/usr/bin/docker-entrypoint.sh"]
+
+VOLUME ["/data"]
+
+CMD ["minio"]
\ No newline at end of file
diff --git a/apps/rpuppy/Dockerfile b/apps/rpuppy/Dockerfile
new file mode 100644
index 0000000..47a32c9
--- /dev/null
+++ b/apps/rpuppy/Dockerfile
@@ -0,0 +1,24 @@
+FROM golang:1-alpine AS build
+
+RUN apk update && apk upgrade && \
+    apk add --no-cache bash git openssh
+
+WORKDIR /app
+RUN go get github.com/itaysk/regogo
+COPY main.go /app/main.go
+
+ENV GOOS linux
+ENV GOARCH arm
+ENV CGO_ENABLED 0
+ENV GO111MODULE off
+RUN go build -o rpuppy -trimpath -ldflags="-s -w" main.go
+
+FROM arm32v7/alpine:latest
+WORKDIR /
+COPY --from=build /app/rpuppy /usr/bin/rpuppy
+
+ENV PORT 80
+EXPOSE ${PORT}
+CMD rpuppy --port=${PORT}
+
+
diff --git a/apps/rpuppy/main.go b/apps/rpuppy/main.go
new file mode 100644
index 0000000..85264d0
--- /dev/null
+++ b/apps/rpuppy/main.go
@@ -0,0 +1,49 @@
+package main
+
+import (
+	"flag"
+	"fmt"
+	"io/ioutil"
+	"log"
+	"net/http"
+
+	"github.com/itaysk/regogo"
+)
+
+var port = flag.Int("port", 3000, "Port to listen on")
+
+func handle(w http.ResponseWriter, r *http.Request) {
+	log.Printf("---------- %s", r.RemoteAddr)
+	resp, err := http.Get("https://dog.ceo/api/breeds/image/random")
+	if err != nil {
+		log.Print(err)
+		return
+	}
+	respBody, err := ioutil.ReadAll(resp.Body)
+	if err != nil {
+		log.Print(err)
+		return
+	}
+	imgPath, err := regogo.Get(string(respBody), "input.message")
+	if err != nil {
+		log.Print(err)
+		return
+	}
+	w.Write([]byte(fmt.Sprintf(`
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>Photos</title>
+    </head>
+    <script src="static/photos.js"></script>
+    <body>
+      <img src="%s"></img>
+    </body>
+</html>`, imgPath.String())))
+}
+
+func main() {
+	flag.Parse()
+	http.HandleFunc("/", handle)
+	log.Fatal(http.ListenAndServe(fmt.Sprintf(":%d", *port), nil))
+}