diff --git a/Dockerfile b/Dockerfile index 26ab9fe..0072f4a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,18 +1,26 @@ +ARG name="email-collector" +ARG repo="github.com/productionwentdown/${name}" + + FROM golang:1.10-alpine as go -ARG repo=github.com/productionwentdown/email-collector +ARG name +ARG repo WORKDIR /go/src/${repo} COPY . . ENV CGO_ENABLED=0 ENV GOOS=linux ENV GOARCH=amd64 -RUN go build -ldflags '-extldflags "-static"' -o email-collector +RUN go build -ldflags '-extldflags "-static"' -o ${name} -FROM scratch +FROM alpine:3.7 + +ARG name +ARG repo EXPOSE 8080 -COPY --from=go /go/src/${repo}/email-collector email-collector +COPY --from=go /go/src/${repo}/${name} /${name} ENTRYPOINT ["/email-collector"] diff --git a/email-collector.go b/email-collector.go index 50594c8..d870906 100644 --- a/email-collector.go +++ b/email-collector.go @@ -2,6 +2,7 @@ package main // import "github.com/productionwentdown/email-collector" import ( "encoding/csv" + "flag" "log" "net/http" "os" @@ -12,10 +13,18 @@ import ( "github.com/productionwentdown/email-collector/checkmail" ) +var filename string +var listen string +var redirect string + func main() { + flag.StringVar(&filename, "file", "list.csv", "file to append records to") + flag.StringVar(&listen, "listen", ":8080", "address to listen to") + flag.StringVar(&redirect, "redirect", "/subscribed", "path to redirect to upon success") + flag.Parse() csvMutex := &sync.Mutex{} - csvFile, err := os.OpenFile("list.csv", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) + csvFile, err := os.OpenFile(filename, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) defer csvFile.Close() if err != nil { log.Fatal(err) @@ -49,10 +58,10 @@ func main() { csvWriter.Write([]string{email, time.Now().String()}) csvWriter.Flush() csvMutex.Unlock() - w.Header().Add("Location", "/subscribed") + w.Header().Add("Location", redirect) w.WriteHeader(303) }) - log.Fatal(http.ListenAndServe(":8080", nil)) + log.Fatal(http.ListenAndServe(listen, nil)) }