From c78ecc177d867e2645dc6cf41f7ec5f070343fc5 Mon Sep 17 00:00:00 2001 From: Tristan Rice Date: Fri, 21 Sep 2018 17:00:05 -0700 Subject: [PATCH 1/2] playground: docker image under 100MB limit now --- playground/Dockerfile | 16 ++++++++++++++-- playground/Makefile | 1 + 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/playground/Dockerfile b/playground/Dockerfile index 0b92cda..1b16c98 100644 --- a/playground/Dockerfile +++ b/playground/Dockerfile @@ -1,6 +1,18 @@ +FROM golang:alpine as base + +RUN apk add binutils +RUN strip /usr/local/go/bin/go +RUN rm -r /usr/local/go/src/cmd +RUN rm -r /usr/local/go/src/vendor +RUN find /usr/local/go/src -name "testdata" -exec rm -r {} + + +WORKDIR /go/src/app +COPY . . + FROM scratch -COPY . / +COPY --from=base /go/src/app/ / +COPY --from=base /usr/local/go/bin/go /bin/go +COPY --from=base /usr/local/go/src /lib/go/src EXPOSE 8080 CMD ["/playground"] - diff --git a/playground/Makefile b/playground/Makefile index 93de529..173ecf6 100644 --- a/playground/Makefile +++ b/playground/Makefile @@ -2,6 +2,7 @@ build: wasm_exec.js yarn install go install -v .. + @rm -r bundles mkdir -p bundles go-pry -generate="bundles/main.go" -i="fmt,log,math" -e='log.Println("Hello world!")' GOOS=js GOARCH=wasm go build -v -ldflags "-s -w" -o bundles/main.wasm bundles/main.go From 8b4957cca11b02b65d3d8220a786dfcaedb7fe0a Mon Sep 17 00:00:00 2001 From: Tristan Rice Date: Fri, 21 Sep 2018 21:14:47 -0700 Subject: [PATCH 2/2] playground: server most likely now runs --- playground/Dockerfile | 47 +++++++++++++++++++++++++++++++------ playground/Makefile | 2 +- playground/now.json | 4 ++-- playground/server/server.go | 4 +++- 4 files changed, 46 insertions(+), 11 deletions(-) diff --git a/playground/Dockerfile b/playground/Dockerfile index 1b16c98..2c1bd7a 100644 --- a/playground/Dockerfile +++ b/playground/Dockerfile @@ -1,18 +1,51 @@ FROM golang:alpine as base -RUN apk add binutils +RUN apk add binutils git subversion mercurial RUN strip /usr/local/go/bin/go +RUN rm /usr/local/go/bin/gofmt RUN rm -r /usr/local/go/src/cmd -RUN rm -r /usr/local/go/src/vendor +#RUN rm -r /usr/local/go/src/vendor +RUN rm -r /usr/local/go/api +RUN rm -r /usr/local/go/lib +RUN rm -r /usr/local/go/misc +RUN rm -r /usr/local/go/test +RUN rm -r /usr/share RUN find /usr/local/go/src -name "testdata" -exec rm -r {} + +RUN find /usr/lib/python2.7 -name "*.pyo" -exec rm -r {} + +RUN find /usr/lib/python2.7 -name "*.pyc" -exec rm -r {} + +RUN rm -r /usr/local/go/pkg/linux_amd64 +RUN strip /usr/local/go/pkg/tool/linux_amd64/* WORKDIR /go/src/app COPY . . -FROM scratch -COPY --from=base /go/src/app/ / -COPY --from=base /usr/local/go/bin/go /bin/go -COPY --from=base /usr/local/go/src /lib/go/src +RUN CGO_ENABLED=0 go get ./server +RUN CGO_ENABLED=0 go build -ldflags "-s -w" -o playground ./server +RUN rm -r /go/src/github.com /go/src/golang.org /go/bin +RUN rm -r /root EXPOSE 8080 -CMD ["/playground"] +CMD ["/go/src/app/playground"] + +#WORKDIR /go/src/app +#COPY . . +# +#FROM scratch +#ENV LD_LIBRARY_PATH /lib/:/usr/lib/ +# +#COPY --from=base /go/src/app/ / +# +#COPY --from=base /usr/local/go/bin/go /bin/ +#COPY --from=base /usr/local/go/src /usr/local/go/ +# +#COPY --from=base /lib/*.so* /lib/ +#COPY --from=base /usr/lib/*.so* /usr/lib/ +# +#COPY --from=base /usr/bin/git /bin/ +#COPY --from=base /usr/bin/svn /bin/ +#COPY --from=base /usr/bin/hg /bin/ +# +#COPY --from=base /tmp/ /tmp/ + +#EXPOSE 8080 +#CMD ["/playground"] diff --git a/playground/Makefile b/playground/Makefile index 173ecf6..feb0deb 100644 --- a/playground/Makefile +++ b/playground/Makefile @@ -8,10 +8,10 @@ build: wasm_exec.js GOOS=js GOARCH=wasm go build -v -ldflags "-s -w" -o bundles/main.wasm bundles/main.go go-pry -generate="bundles/stdlib.go" -i="$(shell tr '\n' ',' < packages.txt)" -e='log.Println("Hello world!")' GOOS=js GOARCH=wasm go build -v -ldflags "-s -w" -o bundles/stdlib.wasm bundles/stdlib.go - CGO_ENABLED=0 go build -ldflags "-s -w" -o playground ./server .PHONY: run run: build + CGO_ENABLED=0 go build -ldflags "-s -w" -o playground ./server ./playground wasm_exec.js: $(shell go env GOROOT)/misc/wasm/wasm_exec.js diff --git a/playground/now.json b/playground/now.json index a24b461..b820f3d 100644 --- a/playground/now.json +++ b/playground/now.json @@ -7,8 +7,8 @@ "node_modules", "wasm_exec.js", "bundles", - "playground", - "Dockerfile" + "Dockerfile", + "server" ], "public": true } diff --git a/playground/server/server.go b/playground/server/server.go index 9f9db44..5bc7282 100644 --- a/playground/server/server.go +++ b/playground/server/server.go @@ -14,6 +14,7 @@ import ( "strings" "github.com/d4l3k/go-pry/generate" + "github.com/gorilla/handlers" "github.com/gorilla/mux" "github.com/pkg/errors" ) @@ -121,5 +122,6 @@ func run() error { router.NotFoundHandler = http.FileServer(http.Dir(".")) log.Printf("Listening %s...", *bind) - return http.ListenAndServe(*bind, router) + r := handlers.CombinedLoggingHandler(os.Stderr, router) + return http.ListenAndServe(*bind, r) }