diff options
-rw-r--r-- | .gitignore | 4 | ||||
-rw-r--r-- | Dockerfile | 6 | ||||
-rw-r--r-- | build.clj | 30 | ||||
-rw-r--r-- | deps.edn | 10 | ||||
-rw-r--r-- | docker-compose.yml | 10 | ||||
-rw-r--r-- | src/pics/core.clj | 10 | ||||
-rw-r--r-- | src/pics/handler/home.clj | 5 | ||||
-rw-r--r-- | src/pics/routes.clj | 10 |
8 files changed, 85 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..56bdfe5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.cpcache +.idea +target +.nrepl-port diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..5dfc5d5 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,6 @@ +FROM clojure +RUN mkdir -p /usr/src/app +WORKDIR /usr/src/app +COPY . . +RUN clojure -T:build uber +CMD ["java", "-jar", "target/pics-standalone.jar"] diff --git a/build.clj b/build.clj new file mode 100644 index 0000000..298dbd0 --- /dev/null +++ b/build.clj @@ -0,0 +1,30 @@ +(ns build + (:require [clojure.tools.build.api :as b] + [clojure.edn :as edn])) + +(def project (-> (edn/read-string (slurp "deps.edn")) + :aliases :neil :project)) + +(def class-dir "target/classes") +(def basis (b/create-basis {:project "deps.edn"})) + +(def lib (:name project)) +(def version (:version project)) + +(def uber-file (format "target/%s-standalone.jar" (name lib))) +(def jar-file (format "target/%s.jar" (name lib))) + +(defn clean [_] + (b/delete {:path "target"})) + +(defn uber [_] + (clean nil) + (b/copy-dir {:src-dirs ["src" "resources"] + :target-dir class-dir}) + (b/compile-clj {:basis basis + :src-dirs ["src"] + :class-dir class-dir}) + (b/uber {:class-dir class-dir + :uber-file uber-file + :basis basis + :main 'pics.core})) diff --git a/deps.edn b/deps.edn new file mode 100644 index 0000000..0094f30 --- /dev/null +++ b/deps.edn @@ -0,0 +1,10 @@ +{:paths ["src"] + :deps {http-kit/http-kit {:mvn/version "2.8.0"} + metosin/reitit {:mvn/version "0.8.0"} + lynxeyes/dotenv {:mvn/version "1.1.0"}} + :aliases + {:neil {:project {:name pics/pics + :version "0.0.1"}} + :build {:deps {io.github.clojure/tools.build {:git/tag "v0.10.8" + :git/sha "2fdfd66"}} + :ns-default build}}} diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..b6deacb --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,10 @@ +services: + pics-server: + build: . + networks: + caddy-link: + +networks: + caddy-link: + external: true + name: caddy_caddy-link diff --git a/src/pics/core.clj b/src/pics/core.clj new file mode 100644 index 0000000..68826f9 --- /dev/null +++ b/src/pics/core.clj @@ -0,0 +1,10 @@ +(ns pics.core + (:require [org.httpkit.server :as http-server] + [pics.routes :as proutes] + [dotenv :as env]) + (:gen-class)) + +(defn -main [& args] + (let [port (or (env/env "PORT") 8080)] + (println (str "Starting server on port " port "...")) + (http-server/run-server proutes/ring-handler {:port port}))) diff --git a/src/pics/handler/home.clj b/src/pics/handler/home.clj new file mode 100644 index 0000000..a02ec33 --- /dev/null +++ b/src/pics/handler/home.clj @@ -0,0 +1,5 @@ +(ns pics.handler.home + (:require [ring.util.response :as ruresp])) + +(defn handle [req] + (ruresp/not-found "Coming soon...")) diff --git a/src/pics/routes.clj b/src/pics/routes.clj new file mode 100644 index 0000000..67793f9 --- /dev/null +++ b/src/pics/routes.clj @@ -0,0 +1,10 @@ +(ns pics.routes + (:require [reitit.ring :as rring] + + [pics.handler.home :as phhome])) + +(def ^:private router + (rring/router [["/" {:get {:handler phhome/handle}}]])) + +(def ring-handler + (rring/ring-handler router)) |