From 7cc0d4132caa8c9cba253c50bbca4c01efb09786 Mon Sep 17 00:00:00 2001 From: Naman Sood Date: Fri, 29 Mar 2024 02:37:53 -0400 Subject: [PATCH] dockerify Signed-off-by: Naman Sood --- .gitignore | 2 +- Dockerfile | 24 ++++++++++++++++++ README.md | 7 ++++- errorCatcher.go => cmd/prose/errorCatcher.go | 0 listener.go => cmd/prose/listener.go | 0 post.go => cmd/prose/post.go | 0 prose.go => cmd/prose/prose.go | 0 server.go => cmd/prose/server.go | 6 ++--- style.go => cmd/prose/style.go | 0 template.go => cmd/prose/template.go | 0 .../fonts}/JetBrainsMono-Bold.ttf | Bin .../fonts}/JetBrainsMono-BoldItalic.ttf | Bin .../fonts}/JetBrainsMono-ExtraBold.ttf | Bin .../fonts}/JetBrainsMono-ExtraBoldItalic.ttf | Bin .../fonts}/JetBrainsMono-ExtraLight.ttf | Bin .../fonts}/JetBrainsMono-ExtraLightItalic.ttf | Bin .../fonts}/JetBrainsMono-Italic.ttf | Bin .../fonts}/JetBrainsMono-Light.ttf | Bin .../fonts}/JetBrainsMono-LightItalic.ttf | Bin .../fonts}/JetBrainsMono-Medium.ttf | Bin .../fonts}/JetBrainsMono-MediumItalic.ttf | Bin .../fonts}/JetBrainsMono-Regular.ttf | Bin .../fonts}/JetBrainsMono-SemiBold.ttf | Bin .../fonts}/JetBrainsMono-SemiBoldItalic.ttf | Bin .../fonts}/JetBrainsMono-Thin.ttf | Bin .../fonts}/JetBrainsMono-ThinItalic.ttf | Bin {fonts => static/fonts}/Nunito-Black.ttf | Bin .../fonts}/Nunito-BlackItalic.ttf | Bin {fonts => static/fonts}/Nunito-Bold.ttf | Bin {fonts => static/fonts}/Nunito-BoldItalic.ttf | Bin {fonts => static/fonts}/Nunito-ExtraBold.ttf | Bin .../fonts}/Nunito-ExtraBoldItalic.ttf | Bin {fonts => static/fonts}/Nunito-ExtraLight.ttf | Bin .../fonts}/Nunito-ExtraLightItalic.ttf | Bin {fonts => static/fonts}/Nunito-Italic.ttf | Bin {fonts => static/fonts}/Nunito-Light.ttf | Bin .../fonts}/Nunito-LightItalic.ttf | Bin {fonts => static/fonts}/Nunito-Regular.ttf | Bin {fonts => static/fonts}/Nunito-SemiBold.ttf | Bin .../fonts}/Nunito-SemiBoldItalic.ttf | Bin {fonts => static/fonts}/OFL.txt | 0 41 files changed, 34 insertions(+), 5 deletions(-) create mode 100644 Dockerfile rename errorCatcher.go => cmd/prose/errorCatcher.go (100%) rename listener.go => cmd/prose/listener.go (100%) rename post.go => cmd/prose/post.go (100%) rename prose.go => cmd/prose/prose.go (100%) rename server.go => cmd/prose/server.go (96%) rename style.go => cmd/prose/style.go (100%) rename template.go => cmd/prose/template.go (100%) rename {fonts => static/fonts}/JetBrainsMono-Bold.ttf (100%) rename {fonts => static/fonts}/JetBrainsMono-BoldItalic.ttf (100%) rename {fonts => static/fonts}/JetBrainsMono-ExtraBold.ttf (100%) rename {fonts => static/fonts}/JetBrainsMono-ExtraBoldItalic.ttf (100%) rename {fonts => static/fonts}/JetBrainsMono-ExtraLight.ttf (100%) rename {fonts => static/fonts}/JetBrainsMono-ExtraLightItalic.ttf (100%) rename {fonts => static/fonts}/JetBrainsMono-Italic.ttf (100%) rename {fonts => static/fonts}/JetBrainsMono-Light.ttf (100%) rename {fonts => static/fonts}/JetBrainsMono-LightItalic.ttf (100%) rename {fonts => static/fonts}/JetBrainsMono-Medium.ttf (100%) rename {fonts => static/fonts}/JetBrainsMono-MediumItalic.ttf (100%) rename {fonts => static/fonts}/JetBrainsMono-Regular.ttf (100%) rename {fonts => static/fonts}/JetBrainsMono-SemiBold.ttf (100%) rename {fonts => static/fonts}/JetBrainsMono-SemiBoldItalic.ttf (100%) rename {fonts => static/fonts}/JetBrainsMono-Thin.ttf (100%) rename {fonts => static/fonts}/JetBrainsMono-ThinItalic.ttf (100%) rename {fonts => static/fonts}/Nunito-Black.ttf (100%) rename {fonts => static/fonts}/Nunito-BlackItalic.ttf (100%) rename {fonts => static/fonts}/Nunito-Bold.ttf (100%) rename {fonts => static/fonts}/Nunito-BoldItalic.ttf (100%) rename {fonts => static/fonts}/Nunito-ExtraBold.ttf (100%) rename {fonts => static/fonts}/Nunito-ExtraBoldItalic.ttf (100%) rename {fonts => static/fonts}/Nunito-ExtraLight.ttf (100%) rename {fonts => static/fonts}/Nunito-ExtraLightItalic.ttf (100%) rename {fonts => static/fonts}/Nunito-Italic.ttf (100%) rename {fonts => static/fonts}/Nunito-Light.ttf (100%) rename {fonts => static/fonts}/Nunito-LightItalic.ttf (100%) rename {fonts => static/fonts}/Nunito-Regular.ttf (100%) rename {fonts => static/fonts}/Nunito-SemiBold.ttf (100%) rename {fonts => static/fonts}/Nunito-SemiBoldItalic.ttf (100%) rename {fonts => static/fonts}/OFL.txt (100%) diff --git a/.gitignore b/.gitignore index 14af3c0..456cfdd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ # ignore the binary -prose +/prose diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..8216ca7 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,24 @@ +FROM golang:bookworm + +WORKDIR / +ENV SASS_VERSION=1.72.0 +ENV SASS_TARFILE="dart-sass-${SASS_VERSION}-linux-x64.tar.gz" +ADD "https://github.com/sass/dart-sass/releases/download/$SASS_VERSION/$SASS_TARFILE" . +RUN tar -xf $SASS_TARFILE +RUN mv dart-sass/* bin/ + +WORKDIR /prose +COPY --link go.mod go.sum ./ +COPY --link cmd/prose cmd/prose +RUN go build ./cmd/prose + +WORKDIR /bin +RUN cp /prose/prose . + +WORKDIR /srv +COPY --link posts posts +COPY --link static static +COPY --link styles styles +COPY --link templates templates +ENV PATH=/bin +ENTRYPOINT ["prose"] diff --git a/README.md b/README.md index a9313fd..a8df6e1 100644 --- a/README.md +++ b/README.md @@ -14,10 +14,15 @@ Posts will be served as `/title-slug`, and files like `static/random/file/struct To start the server: - go run . + go run ./cmd/prose Server will be live on port 8080. +The server can be deployed on a willing host using Docker: + + docker build -t prose . + docker run -p 8080:8080 -it prose + ## License The code in this repository (everything other than the contents of `posts/` and `static/`) is licensed under the MIT license; see LICENSE.md. The blog posts themselves are licensed under [CC-BY-ND 4.0](https://creativecommons.org/licenses/by-nd/4.0/). diff --git a/errorCatcher.go b/cmd/prose/errorCatcher.go similarity index 100% rename from errorCatcher.go rename to cmd/prose/errorCatcher.go diff --git a/listener.go b/cmd/prose/listener.go similarity index 100% rename from listener.go rename to cmd/prose/listener.go diff --git a/post.go b/cmd/prose/post.go similarity index 100% rename from post.go rename to cmd/prose/post.go diff --git a/prose.go b/cmd/prose/prose.go similarity index 100% rename from prose.go rename to cmd/prose/prose.go diff --git a/server.go b/cmd/prose/server.go similarity index 96% rename from server.go rename to cmd/prose/server.go index 92ceb4a..d5480e7 100644 --- a/server.go +++ b/cmd/prose/server.go @@ -265,15 +265,15 @@ func createImage(title, summary, url string, out io.Writer) error { draw := gg.NewContext(imgWidth, imgHeight) - titleFont, err := gg.LoadFontFace("fonts/Nunito-Bold.ttf", titleSize) + titleFont, err := gg.LoadFontFace("static/fonts/Nunito-Bold.ttf", titleSize) if err != nil { return err } - summaryFont, err := gg.LoadFontFace("fonts/Nunito-LightItalic.ttf", summarySize) + summaryFont, err := gg.LoadFontFace("static/fonts/Nunito-LightItalic.ttf", summarySize) if err != nil { return err } - urlFont, err := gg.LoadFontFace("fonts/JetBrainsMono-ExtraLight.ttf", urlSize) + urlFont, err := gg.LoadFontFace("static/fonts/JetBrainsMono-ExtraLight.ttf", urlSize) if err != nil { return err } diff --git a/style.go b/cmd/prose/style.go similarity index 100% rename from style.go rename to cmd/prose/style.go diff --git a/template.go b/cmd/prose/template.go similarity index 100% rename from template.go rename to cmd/prose/template.go diff --git a/fonts/JetBrainsMono-Bold.ttf b/static/fonts/JetBrainsMono-Bold.ttf similarity index 100% rename from fonts/JetBrainsMono-Bold.ttf rename to static/fonts/JetBrainsMono-Bold.ttf diff --git a/fonts/JetBrainsMono-BoldItalic.ttf b/static/fonts/JetBrainsMono-BoldItalic.ttf similarity index 100% rename from fonts/JetBrainsMono-BoldItalic.ttf rename to static/fonts/JetBrainsMono-BoldItalic.ttf diff --git a/fonts/JetBrainsMono-ExtraBold.ttf b/static/fonts/JetBrainsMono-ExtraBold.ttf similarity index 100% rename from fonts/JetBrainsMono-ExtraBold.ttf rename to static/fonts/JetBrainsMono-ExtraBold.ttf diff --git a/fonts/JetBrainsMono-ExtraBoldItalic.ttf b/static/fonts/JetBrainsMono-ExtraBoldItalic.ttf similarity index 100% rename from fonts/JetBrainsMono-ExtraBoldItalic.ttf rename to static/fonts/JetBrainsMono-ExtraBoldItalic.ttf diff --git a/fonts/JetBrainsMono-ExtraLight.ttf b/static/fonts/JetBrainsMono-ExtraLight.ttf similarity index 100% rename from fonts/JetBrainsMono-ExtraLight.ttf rename to static/fonts/JetBrainsMono-ExtraLight.ttf diff --git a/fonts/JetBrainsMono-ExtraLightItalic.ttf b/static/fonts/JetBrainsMono-ExtraLightItalic.ttf similarity index 100% rename from fonts/JetBrainsMono-ExtraLightItalic.ttf rename to static/fonts/JetBrainsMono-ExtraLightItalic.ttf diff --git a/fonts/JetBrainsMono-Italic.ttf b/static/fonts/JetBrainsMono-Italic.ttf similarity index 100% rename from fonts/JetBrainsMono-Italic.ttf rename to static/fonts/JetBrainsMono-Italic.ttf diff --git a/fonts/JetBrainsMono-Light.ttf b/static/fonts/JetBrainsMono-Light.ttf similarity index 100% rename from fonts/JetBrainsMono-Light.ttf rename to static/fonts/JetBrainsMono-Light.ttf diff --git a/fonts/JetBrainsMono-LightItalic.ttf b/static/fonts/JetBrainsMono-LightItalic.ttf similarity index 100% rename from fonts/JetBrainsMono-LightItalic.ttf rename to static/fonts/JetBrainsMono-LightItalic.ttf diff --git a/fonts/JetBrainsMono-Medium.ttf b/static/fonts/JetBrainsMono-Medium.ttf similarity index 100% rename from fonts/JetBrainsMono-Medium.ttf rename to static/fonts/JetBrainsMono-Medium.ttf diff --git a/fonts/JetBrainsMono-MediumItalic.ttf b/static/fonts/JetBrainsMono-MediumItalic.ttf similarity index 100% rename from fonts/JetBrainsMono-MediumItalic.ttf rename to static/fonts/JetBrainsMono-MediumItalic.ttf diff --git a/fonts/JetBrainsMono-Regular.ttf b/static/fonts/JetBrainsMono-Regular.ttf similarity index 100% rename from fonts/JetBrainsMono-Regular.ttf rename to static/fonts/JetBrainsMono-Regular.ttf diff --git a/fonts/JetBrainsMono-SemiBold.ttf b/static/fonts/JetBrainsMono-SemiBold.ttf similarity index 100% rename from fonts/JetBrainsMono-SemiBold.ttf rename to static/fonts/JetBrainsMono-SemiBold.ttf diff --git a/fonts/JetBrainsMono-SemiBoldItalic.ttf b/static/fonts/JetBrainsMono-SemiBoldItalic.ttf similarity index 100% rename from fonts/JetBrainsMono-SemiBoldItalic.ttf rename to static/fonts/JetBrainsMono-SemiBoldItalic.ttf diff --git a/fonts/JetBrainsMono-Thin.ttf b/static/fonts/JetBrainsMono-Thin.ttf similarity index 100% rename from fonts/JetBrainsMono-Thin.ttf rename to static/fonts/JetBrainsMono-Thin.ttf diff --git a/fonts/JetBrainsMono-ThinItalic.ttf b/static/fonts/JetBrainsMono-ThinItalic.ttf similarity index 100% rename from fonts/JetBrainsMono-ThinItalic.ttf rename to static/fonts/JetBrainsMono-ThinItalic.ttf diff --git a/fonts/Nunito-Black.ttf b/static/fonts/Nunito-Black.ttf similarity index 100% rename from fonts/Nunito-Black.ttf rename to static/fonts/Nunito-Black.ttf diff --git a/fonts/Nunito-BlackItalic.ttf b/static/fonts/Nunito-BlackItalic.ttf similarity index 100% rename from fonts/Nunito-BlackItalic.ttf rename to static/fonts/Nunito-BlackItalic.ttf diff --git a/fonts/Nunito-Bold.ttf b/static/fonts/Nunito-Bold.ttf similarity index 100% rename from fonts/Nunito-Bold.ttf rename to static/fonts/Nunito-Bold.ttf diff --git a/fonts/Nunito-BoldItalic.ttf b/static/fonts/Nunito-BoldItalic.ttf similarity index 100% rename from fonts/Nunito-BoldItalic.ttf rename to static/fonts/Nunito-BoldItalic.ttf diff --git a/fonts/Nunito-ExtraBold.ttf b/static/fonts/Nunito-ExtraBold.ttf similarity index 100% rename from fonts/Nunito-ExtraBold.ttf rename to static/fonts/Nunito-ExtraBold.ttf diff --git a/fonts/Nunito-ExtraBoldItalic.ttf b/static/fonts/Nunito-ExtraBoldItalic.ttf similarity index 100% rename from fonts/Nunito-ExtraBoldItalic.ttf rename to static/fonts/Nunito-ExtraBoldItalic.ttf diff --git a/fonts/Nunito-ExtraLight.ttf b/static/fonts/Nunito-ExtraLight.ttf similarity index 100% rename from fonts/Nunito-ExtraLight.ttf rename to static/fonts/Nunito-ExtraLight.ttf diff --git a/fonts/Nunito-ExtraLightItalic.ttf b/static/fonts/Nunito-ExtraLightItalic.ttf similarity index 100% rename from fonts/Nunito-ExtraLightItalic.ttf rename to static/fonts/Nunito-ExtraLightItalic.ttf diff --git a/fonts/Nunito-Italic.ttf b/static/fonts/Nunito-Italic.ttf similarity index 100% rename from fonts/Nunito-Italic.ttf rename to static/fonts/Nunito-Italic.ttf diff --git a/fonts/Nunito-Light.ttf b/static/fonts/Nunito-Light.ttf similarity index 100% rename from fonts/Nunito-Light.ttf rename to static/fonts/Nunito-Light.ttf diff --git a/fonts/Nunito-LightItalic.ttf b/static/fonts/Nunito-LightItalic.ttf similarity index 100% rename from fonts/Nunito-LightItalic.ttf rename to static/fonts/Nunito-LightItalic.ttf diff --git a/fonts/Nunito-Regular.ttf b/static/fonts/Nunito-Regular.ttf similarity index 100% rename from fonts/Nunito-Regular.ttf rename to static/fonts/Nunito-Regular.ttf diff --git a/fonts/Nunito-SemiBold.ttf b/static/fonts/Nunito-SemiBold.ttf similarity index 100% rename from fonts/Nunito-SemiBold.ttf rename to static/fonts/Nunito-SemiBold.ttf diff --git a/fonts/Nunito-SemiBoldItalic.ttf b/static/fonts/Nunito-SemiBoldItalic.ttf similarity index 100% rename from fonts/Nunito-SemiBoldItalic.ttf rename to static/fonts/Nunito-SemiBoldItalic.ttf diff --git a/fonts/OFL.txt b/static/fonts/OFL.txt similarity index 100% rename from fonts/OFL.txt rename to static/fonts/OFL.txt