refactor: replace lein with cli tools and update some deps

- also removes docker files from source directories
- minor assets reorganization on back (make it more production ready)
This commit is contained in:
Andrey Antukh 2019-06-03 16:51:20 +02:00
parent 8a5c1498e9
commit 3b648f5aa5
86 changed files with 6831 additions and 1143 deletions

View file

@ -1,80 +0,0 @@
FROM monogramm/docker-uxbox-builder:latest
ENV LEIN_ROOT=TRUE
# Copy backend source and build release
COPY . /home/uxbox/backend
RUN set -ex; \
cd backend; \
rm -f Dockerfile; \
bash -c "/home/uxbox/backend/scripts/dist.sh"
# Once application has been built, prepare production image
FROM openjdk:8-jre
LABEL maintainer="Monogramm Maintainers <opensource at monogramm dot io>"
# Add uxbox as provided by builder
COPY --from=0 /home/uxbox/backend/dist/uxbox-backend.jar /srv/uxbox/app.jar
COPY --from=0 /home/uxbox/backend/docker-entrypoint.sh /entrypoint.sh
ENV LANG=en_US.UTF-8 \
LC_ALL=C.UTF-8 \
UXBOX_HTTP_SERVER_DEBUG=false \
UXBOX_MEDIA_URI="http://localhost:6060/media/" \
UXBOX_MEDIA_DIRECTORY="resources/public/media" \
UXBOX_ASSETS_URI="http://localhost:6060/static/" \
UXBOX_ASSETS_DIRECTORY="resources/public/static" \
UXBOX_DATABASE_USERNAME="uxbox" \
UXBOX_DATABASE_PASSWORD="youshouldoverwritethiswithsomethingelse" \
UXBOX_DATABASE_NAME="uxbox" \
UXBOX_DATABASE_SERVER="localhost" \
UXBOX_DATABASE_PORT=5432 \
UXBOX_EMAIL_REPLY_TO="no-reply@uxbox.io" \
UXBOX_EMAIL_FROM="no-reply@uxbox.io" \
UXBOX_SMTP_HOST="localhost" \
UXBOX_SMTP_PORT=25 \
UXBOX_SMTP_USER="uxbox" \
UXBOX_SMTP_PASSWORD="youshouldoverwritethiswithsomethingelse" \
UXBOX_SMTP_SSL=false \
UXBOX_SMTP_TLS=false \
UXBOX_SMTP_ENABLED=false \
UXBOX_SECRET=""
RUN set -ex; \
chmod 755 /entrypoint.sh; \
mkdir -p /srv/uxbox/resources/public/media; \
mkdir -p /srv/uxbox/resources/public/static; \
apt-get update -yq && \
apt-get install -yq \
git \
imagemagick \
webp \
; \
apt-get update -yq; \
apt-get install -yq \
libbz2-dev liblzma-dev zlib1g-dev libfftw3-dev \
libfreetype6-dev libfontconfig1-dev libxt-dev \
libexif-dev libjpeg-dev libpng-dev libtiff-dev \
libwmf-dev libpango1.0-dev librsvg2-bin librsvg2-dev \
libxml2-dev libwebp-dev webp \
; \
git clone https://github.com/ImageMagick/ImageMagick.git imagemagick && \
cd imagemagick && \
git checkout -f 7.0.8-27 && \
./configure --prefix=/opt/img && \
make -j2 && \
make install && \
cd .. && \
rm -rf ./imagemagick
VOLUME /srv/uxbox/resources/public
WORKDIR /srv/uxbox/
EXPOSE 6060
ENTRYPOINT ["sh", "/entrypoint.sh"]
CMD ["java", "-jar", "app.jar"]

40
backend/deps.edn Normal file
View file

@ -0,0 +1,40 @@
{:deps {org.clojure/clojure {:mvn/version "1.10.0"}
org.clojure/tools.logging {:mvn/version "0.3.1"}
org.clojure/data.xml {:mvn/version "0.1.0-beta2"}
funcool/suricatta {:mvn/version "1.3.1"}
funcool/promesa {:mvn/version "2.0.0"}
funcool/catacumba {:mvn/version "2.1.0"}
funcool/cuerdas {:mvn/version "2.2.0"}
funcool/datoteka {:mvn/version "1.0.0"}
org.jsoup/jsoup {:mvn/version "1.10.2"}
hiccup/hiccup {:mvn/version "1.0.5"}
org.im4java/im4java {:mvn/version "1.4.0"}
org.slf4j/slf4j-simple {:mvn/version "1.7.24"}
com.layerware/hugsql-core {:mvn/version "0.4.7"
:exclusions [org.clojure/tools.reader]}
niwinz/migrante {:mvn/version "0.1.0"}
buddy/buddy-sign {:mvn/version "2.2.0"}
buddy/buddy-hashers {:mvn/version "1.3.0"}
org.xerial.snappy/snappy-java {:mvn/version "1.1.2.6"}
com.github.spullara.mustache.java/compiler {:mvn/version "0.9.4"}
org.postgresql/postgresql {:mvn/version "42.0.0"}
org.quartz-scheduler/quartz {:mvn/version "2.2.3"}
org.quartz-scheduler/quartz-jobs {:mvn/version "2.2.3"}
commons-io/commons-io {:mvn/version "2.5"}
com.draines/postal {:mvn/version "2.0.2"
:exclusions [commons-codec/commons-codec]}
hikari-cp/hikari-cp {:mvn/version "1.7.5"}
mount/mount {:mvn/version "0.1.11"}
environ/environ {:mvn/version "1.1.0"}
}
:paths ["src" "vendor" "resources"]
:aliases
{:dev
{:extra-deps {com.bhauman/rebel-readline {:mvn/version "0.1.4"}
org.clojure/tools.namespace {:mvn/version "0.2.11"}
}
:extra-paths ["test"]}
}}

View file

@ -1,7 +0,0 @@
#!/usr/bin/env bash
set -e
echo "UXBOX backend Docker entrypoint initialization..."
echo 'Running UXBOX backend'
exec "$@"

View file

@ -1,13 +0,0 @@
{:dev
{:plugins [[lein-ancient "0.6.10"]]
:dependencies [[clj-http "2.1.0"]]
:jvm-opts ["-Xms50m" "-Xmx200m" "-XX:+UseG1GC"]
:main ^:skip-aot uxbox.main}
:uberjar
{:jar-exclusions [#"\.swp|\.swo|user\.clj" #"^media"]
:jar-name "uxbox.jar"
:uberjar-name "uxbox-backend.jar"
:main uxbox.main
:aot :all
:target-path "dist/"}}

View file

@ -1,44 +0,0 @@
(defproject uxbox-backend "0.1.0-SNAPSHOT"
:description "UXBox backend."
:url "http://uxbox.github.io"
:license {:name "MPL 2.0" :url "https://www.mozilla.org/en-US/MPL/2.0/"}
:source-paths ["src" "vendor"]
:javac-options ["-target" "1.8" "-source" "1.8" "-Xlint:-options"]
;; :jvm-opts ["-Dcom.sun.management.jmxremote.port=9090"
;; "-Dcom.sun.management.jmxremote.authenticate=false"
;; "-Dcom.sun.management.jmxremote.ssl=false"
;; "-Dcom.sun.management.jmxremote.rmi.port=9090"
;; "-Djava.rmi.server.hostname=0.0.0.0"]
:dependencies [[org.clojure/clojure "1.9.0-alpha14"]
[org.clojure/tools.logging "0.3.1"]
[funcool/suricatta "1.3.1"]
[funcool/promesa "1.8.0"]
[funcool/catacumba "2.1.0"]
[funcool/cuerdas "2.0.3"]
[funcool/datoteka "1.0.0"]
[org.clojure/data.xml "0.1.0-beta2"]
[org.jsoup/jsoup "1.10.2"]
[hiccup "1.0.5"]
[org.im4java/im4java "1.4.0"]
[org.slf4j/slf4j-simple "1.7.24"]
[com.layerware/hugsql-core "0.4.7"
:exclusions [org.clojure/tools.reader]]
[niwinz/migrante "0.1.0"]
[buddy/buddy-sign "2.2.0"]
[buddy/buddy-hashers "1.3.0"]
[org.xerial.snappy/snappy-java "1.1.2.6"]
[com.github.spullara.mustache.java/compiler "0.9.4"]
[org.postgresql/postgresql "42.0.0"]
[org.quartz-scheduler/quartz "2.2.3"]
[org.quartz-scheduler/quartz-jobs "2.2.3"]
[commons-io/commons-io "2.5"]
[com.draines/postal "2.0.2" :exclusions [commons-codec]]
[hikari-cp "1.7.5"]
[mount "0.1.11"]
[environ "1.1.0"]])

View file

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 750 B

After

Width:  |  Height:  |  Size: 750 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Before After
Before After

View file

@ -6,7 +6,7 @@
(ns uxbox.cli.collimp
"Collection importer command line helper."
(:require [clojure.spec :as s]
(:require [clojure.spec.alpha :as s]
[clojure.pprint :refer [pprint]]
[clojure.java.io :as io]
[mount.core :as mount]

View file

@ -40,9 +40,9 @@
:database-name (lookup-env env :uxbox-database-name "uxbox")
:database-server (lookup-env env :uxbox-database-server "localhost")
:database-port (lookup-env env :uxbox-database-port 5432)
:media-directory (lookup-env env :uxbox-media-directory "resources/media")
:media-directory (lookup-env env :uxbox-media-directory "resources/public/media")
:media-uri (lookup-env env :uxbox-media-uri "http://localhost:6060/media/")
:assets-directory (lookup-env env :uxbox-assets-directory "resources/static")
:assets-directory (lookup-env env :uxbox-assets-directory "resources/public/static")
:assets-uri (lookup-env env :uxbox-assets-uri "http://localhost:6060/static/")
:email-reply-to (lookup-env env :uxbox-email-reply-to "no-reply@uxbox.io")

View file

@ -5,7 +5,7 @@
;; Copyright (c) 2016 Andrey Antukh <niwi@niwi.nz>
(ns uxbox.frontend.auth
(:require [clojure.spec :as s]
(:require [clojure.spec.alpha :as s]
[catacumba.core :as ct]
[catacumba.http :as http]
[promesa.core :as p]

View file

@ -5,7 +5,7 @@
;; Copyright (c) 2016 Andrey Antukh <niwi@niwi.nz>
(ns uxbox.frontend.icons
(:require [clojure.spec :as s]
(:require [clojure.spec.alpha :as s]
[promesa.core :as p]
[catacumba.http :as http]
[uxbox.util.spec :as us]

View file

@ -5,7 +5,7 @@
;; Copyright (c) 2016 Andrey Antukh <niwi@niwi.nz>
(ns uxbox.frontend.images
(:require [clojure.spec :as s]
(:require [clojure.spec.alpha :as s]
[promesa.core :as p]
[catacumba.http :as http]
[datoteka.storages :as st]

View file

@ -6,7 +6,7 @@
(ns uxbox.frontend.kvstore
(:refer-clojure :exclude [update])
(:require [clojure.spec :as s]
(:require [clojure.spec.alpha :as s]
[promesa.core :as p]
[catacumba.http :as http]
[uxbox.media :as media]

View file

@ -5,7 +5,7 @@
;; Copyright (c) 2016 Andrey Antukh <niwi@niwi.nz>
(ns uxbox.frontend.pages
(:require [clojure.spec :as s]
(:require [clojure.spec.alpha :as s]
[promesa.core :as p]
[catacumba.http :as http]
[uxbox.util.spec :as us]

View file

@ -5,7 +5,7 @@
;; Copyright (c) 2016 Andrey Antukh <niwi@niwi.nz>
(ns uxbox.frontend.projects
(:require [clojure.spec :as s]
(:require [clojure.spec.alpha :as s]
[promesa.core :as p]
[catacumba.http :as http]
[uxbox.util.spec :as us]

View file

@ -6,7 +6,7 @@
(ns uxbox.frontend.svgparse
"A frontend exposed endpoints for svgparse functionality."
(:require [clojure.spec :as s]
(:require [clojure.spec.alpha :as s]
[promesa.core :as p]
[catacumba.http :as http]
[uxbox.util.spec :as us]

View file

@ -5,7 +5,7 @@
;; Copyright (c) 2016 Andrey Antukh <niwi@niwi.nz>
(ns uxbox.frontend.users
(:require [clojure.spec :as s]
(:require [clojure.spec.alpha :as s]
[promesa.core :as p]
[catacumba.http :as http]
[datoteka.storages :as st]

View file

@ -6,7 +6,7 @@
(ns uxbox.images
"Image postprocessing."
(:require [clojure.spec :as s]
(:require [clojure.spec.alpha :as s]
[clojure.java.io :as io]
[datoteka.storages :as st]
[datoteka.core :as fs]

View file

@ -5,7 +5,7 @@
;; Copyright (c) 2016 Andrey Antukh <niwi@niwi.nz>
(ns uxbox.services.auth
(:require [clojure.spec :as s]
(:require [clojure.spec.alpha :as s]
[suricatta.core :as sc]
[buddy.hashers :as hashers]
[buddy.sign.jwt :as jwt]

View file

@ -6,7 +6,7 @@
(ns uxbox.services.icons
"Icons library related services."
(:require [clojure.spec :as s]
(:require [clojure.spec.alpha :as s]
[suricatta.core :as sc]
[uxbox.util.spec :as us]
[uxbox.sql :as sql]

View file

@ -6,7 +6,7 @@
(ns uxbox.services.images
"Images library related services."
(:require [clojure.spec :as s]
(:require [clojure.spec.alpha :as s]
[promesa.core :as p]
[suricatta.core :as sc]
[datoteka.storages :as st]

View file

@ -5,7 +5,7 @@
;; Copyright (c) 2016 Andrey Antukh <niwi@niwi.nz>
(ns uxbox.services.kvstore
(:require [clojure.spec :as s]
(:require [clojure.spec.alpha :as s]
[suricatta.core :as sc]
[buddy.core.codecs :as codecs]
[uxbox.config :as ucfg]

View file

@ -5,7 +5,7 @@
;; Copyright (c) 2016 Andrey Antukh <niwi@niwi.nz>
(ns uxbox.services.pages
(:require [clojure.spec :as s]
(:require [clojure.spec.alpha :as s]
[suricatta.core :as sc]
[buddy.core.codecs :as codecs]
[uxbox.config :as ucfg]

View file

@ -5,7 +5,7 @@
;; Copyright (c) 2016 Andrey Antukh <niwi@niwi.nz>
(ns uxbox.services.projects
(:require [clojure.spec :as s]
(:require [clojure.spec.alpha :as s]
[suricatta.core :as sc]
[buddy.core.codecs :as codecs]
[uxbox.config :as ucfg]

View file

@ -5,7 +5,7 @@
;; Copyright (c) 2016 Andrey Antukh <niwi@niwi.nz>
(ns uxbox.services.svgparse
(:require [clojure.spec :as s]
(:require [clojure.spec.alpha :as s]
[cuerdas.core :as str]
[uxbox.util.spec :as us]
[uxbox.services.core :as core]

View file

@ -5,7 +5,7 @@
;; Copyright (c) 2016 Andrey Antukh <niwi@niwi.nz>
(ns uxbox.services.users
(:require [clojure.spec :as s]
(:require [clojure.spec.alpha :as s]
[mount.core :as mount :refer (defstate)]
[suricatta.core :as sc]
[buddy.hashers :as hashers]

View file

@ -0,0 +1,3 @@
(ns uxbox.test)
(defn kaka [] 1)

View file

@ -6,7 +6,7 @@
(ns uxbox.util.spec
(:refer-clojure :exclude [keyword uuid vector boolean map set])
(:require [clojure.spec :as s]
(:require [clojure.spec.alpha :as s]
[cuerdas.core :as str]
[uxbox.util.exceptions :as ex])
(:import java.time.Instant))