diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..12dfd0e --- /dev/null +++ b/.drone.yml @@ -0,0 +1,23 @@ +kind: pipeline +name: default + +workspace: + base: /go + path: src/deadbeef.codes/steven/deadbeef.codes-publicfileserver + +steps: +- name: build + image: golang + pull: always + environment: + GOOS: linux + GOARCH: amd64 + CGO_ENABLED: 0 + commands: + - go version + - go get + - go build -a -ldflags '-w' +- name: publish + image: plugins/docker + settings: + repo: registry.deadbeef.codes/deadbeef.codes-publicfileserver diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..b55b0f6 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,4 @@ +FROM scratch +COPY deadbeef.codes-publicfileserver / +EXPOSE 8080:8080 +ENTRYPOINT ["/deadbeef.codes-publicfileserver"] \ No newline at end of file diff --git a/main.go b/main.go new file mode 100644 index 0000000..d8a1e97 --- /dev/null +++ b/main.go @@ -0,0 +1,23 @@ +package main + +import ( + "fmt" + "log" + "net/http" + "os" + "os/signal" +) + +// http server setup and routing +func main() { + stop := make(chan os.Signal, 1) + signal.Notify(stop, os.Interrupt) + go func() { + http.Handle("/public/", http.StripPrefix("/public/", http.FileServer(http.Dir("public")))) + log.Fatal(http.ListenAndServe(":8080", nil)) + }() + log.Println("started public fileserver on 8080") + + <-stop + fmt.Println("Shutting server down...") +}