diff --git a/Dockerfile b/Dockerfile index 94ca3a9..becaba4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,9 @@ -FROM gradle:jdk11 AS build +FROM gradle:jdk14 AS build COPY --chown=gradle:gradle . /home/gradle/src WORKDIR /home/gradle/src RUN gradle build --no-daemon -FROM openjdk:11-jre-slim +FROM openjdk:14.0-slim EXPOSE 4567 diff --git a/README.md b/README.md index 4b9cec9..ec11182 100644 --- a/README.md +++ b/README.md @@ -14,21 +14,21 @@ unnecessary features, or they didn't have all the features I wanted. apparently it's not) - Provides a simple API for adding new short links - Links are stored in an SQLite database -- Available as a Docker container (there is no image on docker hub _yet_) +- Available as a Docker container - Backend written in Java using [Spark Java](http://sparkjava.com/), frontend written in plain HTML and vanilla JS, using [Pure CSS](https://purecss.io/) for styling # Bloat that will not be implemented - Logging, tracking or spying of any kind. The only logs that still exist are - errors printed to stderr and the default SLF4J warning + errors printed to stderr and the default SLF4J warning. - User management. If you need a shortener for your whole organisation, either - run separate containers for everyone or use something else + run separate containers for everyone or use something else. - Cookies, newsletters, "we value your privacy" popups or any of the multiple -other ways modern web shows how anti-user it is. We all hate those and they're -not needed here -- Paywalls or messages beging for donations. If you want to support me (for -whatever reason), you can message me through Github issues or via email +other ways modern web shows how anti-user it is. We all hate those, and they're +not needed here. +- Paywalls or messages begging for donations. If you want to support me (for +whatever reason), you can message me through Github issues or via email. [github@draganczuk.tk](mailto:github@draganczuk.tk) I _might_ add one of those "fork me on github" thingies in the corner, though I @@ -37,11 +37,6 @@ doubt I will # Screenshot ![Screenshot](./screenshot.png) -# Planned features for 1.0 (in order of importance -- Better deduplication -- Code cleanup -- Official Docker Hub image - # Usage Clone this repository ``` @@ -63,7 +58,7 @@ in order to speed up future builds. export username= export password= # Sets where the database exists. Can be local or remote (optional) -export db.url= # Default: './urls.sqlite' +export db_url= # Default: './urls.sqlite' ``` ### 3. Run it @@ -76,31 +71,32 @@ You can optionally set the port the server listens on by appending `--port=[port ## Running with docker ### `docker run` method -1. Build the image +0. (Only if you really want to) Build the image ``` -docker build . -t shorten:latest +docker build . -t simply-shorten:latest ``` -2. Run the image +1. Run the image ``` docker run -p 4567:4567 -d url:latest -e username="username" -e password="password" - -d shorten:latest + -d simply-shorten:latest ``` -2.a Make the database file available to host (optional) +1.a Make the database file available to host (optional) ``` touch ./urls.sqlite docker run -p 4567:4567 \ -e username="username" \ -e password="password" \ -v ./urls.sqlite:/urls.sqlite \ - -e db.url=/urls.sqlite \ - -d shorten:latest + -e db_url=/urls.sqlite \ + -d simply-shorten:latest ``` ## `docker-compose` -There is a sample `docker-compose.yml` file in this repository configured for Traefik. You can use it -as a base, modifying it as needed. Run it with +There is a sample `docker-compose.yml` file in this repository. It contains +everything needed for a basic install. You can use it as a base, modifying +it as needed. Run it with ``` docker-compose up -d --build ``` diff --git a/docker-compose.yml b/docker-compose.yml index a118fba..8c57833 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,32 +1,19 @@ version: "3" services: url: - # TODO: Publish to docker hub - build: - context: . + image: draganczukp/simply-shorten container_name: url environment: - - db.url=/urls.sqlite - - username=${URL_LOGIN} - - password=${URL_PASSWORD} + # Change if you want to mount the database somewhere else + # - db_url=/urls.sqlite + - username=admin + - password=$3CuReP4S$W0rD volumes: - - ./urls.sqlite:/urls.sqlite - networks: - - ${NETWORK} - labels: - - "traefik.enable=true" - - "traefik.http.routers.url.entrypoints=http" - - "traefik.http.routers.url.rule=Host(`url.${TLD}`)" - - "traefik.http.middlewares.url-https-redirect.redirectscheme.scheme=https" - - "traefik.http.routers.url.middlewares=url-https-redirect" - - "traefik.http.routers.url-secure.entrypoints=https" - - "traefik.http.routers.url-secure.rule=Host(`url.${TLD}`)" - - "traefik.http.routers.url-secure.tls=true" - - "traefik.http.routers.url-secure.tls.certresolver=http" - - "traefik.http.routers.url-secure.service=url" - - "traefik.http.services.url.loadbalancer.server.port=4567" - - "traefik.docker.network=proxy" - restart: ${RESTART} + - db:/urls.sqlite + restart: unless-stopped + +volumes: + db: networks: proxy: diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index f3d88b1..490fda8 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 509fd05..a4f0001 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Fri Feb 14 18:22:25 CET 2020 -distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.4.1-bin.zip zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/src/main/java/tk/draganczuk/url/UrlRepository.java b/src/main/java/tk/draganczuk/url/UrlRepository.java index 8e84ec3..b4b3b06 100644 --- a/src/main/java/tk/draganczuk/url/UrlRepository.java +++ b/src/main/java/tk/draganczuk/url/UrlRepository.java @@ -17,11 +17,11 @@ public class UrlRepository { private static final String SELECT_FOR_SHORT_SQL = "SELECT long_url FROM urls WHERE short_url = ?"; private static final String DELETE_ROW_SQL = "DELETE FROM urls WHERE short_url = ?"; - private String databaseUrl; + private final String databaseUrl; public UrlRepository() { - String path = System.getenv().getOrDefault("db.url", "./urls.sqlite"); + String path = System.getenv().getOrDefault("db_url", "/urls.sqlite"); databaseUrl = "jdbc:sqlite:" + path;