From 05a3e147f18785889e8702d558a6e7919f70c196 Mon Sep 17 00:00:00 2001 From: Tony Grosinger Date: Thu, 26 Dec 2019 09:55:55 -0800 Subject: [PATCH] Initial Commit --- .gitignore | 1 + Dockerfile | 6 ++++++ Makefile | 8 ++++++++ README.md | 8 ++++++++ cmd/server/main.go | 23 +++++++++++++++++++++++ docker-compose.yml | 19 +++++++++++++++++++ go.mod | 3 +++ 7 files changed, 68 insertions(+) create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 Makefile create mode 100644 README.md create mode 100644 cmd/server/main.go create mode 100644 docker-compose.yml create mode 100644 go.mod diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ba077a4 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +bin diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..6f82fc7 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,6 @@ +FROM scratch +MAINTAINER Tony Grosinger + +COPY bin/simple-file-server / +EXPOSE 80 +ENTRYPOINT ["/simple-file-server"] diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..ea3e3b9 --- /dev/null +++ b/Makefile @@ -0,0 +1,8 @@ + +.PHONY: simple-file-server +simple-file-server: + CGO_ENABLED=0 go build -o bin/simple-file-server cmd/server/main.go + +.PHONY: docker-container +docker-container: + docker build -t tgrosinger/simple-file-server$(DOCKER_IMAGE_TAG) . diff --git a/README.md b/README.md new file mode 100644 index 0000000..140ef86 --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +# Simple File Server + +A single binary, running the [built-in Go file +server](https://golang.org/pkg/net/http/#FileServer). + +No other features. No other security holes. + +Does not serve index.html files. diff --git a/cmd/server/main.go b/cmd/server/main.go new file mode 100644 index 0000000..93efae4 --- /dev/null +++ b/cmd/server/main.go @@ -0,0 +1,23 @@ +package main + +import ( + "flag" + "fmt" + "net/http" + "os" +) + +func main() { + root := flag.String("root", "", "Root of the static files to serve") + flag.Parse() + + if root == nil || *root == "" { + flag.PrintDefaults() + os.Exit(1) + } + + fmt.Println("Starting file server in", *root) + + dir := http.Dir(*root) + fmt.Println(http.ListenAndServe(":80", http.FileServer(dir))) +} diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..39b79f1 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,19 @@ +version: '3' +services: + server: + image: "tgrosinger/simple-file-server" + restart: "always" + networks: + - traefik_default + command: "-root=/data" + labels: + - "traefik.port=80" + - "traefik.frontend.rule=" + - "traefik.frontend.headers.SSLRedirect=true" + - "traefik.docker.network=traefik_default" + - "traefik.enable=true" + volumes: + - :/data +networks: + traefik_default: + external: true diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..d6dac84 --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module github.com/tgrosinger.simple-file-server + +go 1.13