- Published to Docker HUB;

- Updated to Java 14
- A bunch of changes I wanted to do earlier
This commit is contained in:
Przemek Dragańczuk 2020-05-23 19:54:27 +02:00
parent 218f2fa368
commit e9cf90cea7
6 changed files with 34 additions and 52 deletions

View File

@ -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

View File

@ -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=<api username>
export password=<api password>
# Sets where the database exists. Can be local or remote (optional)
export db.url=<url> # Default: './urls.sqlite'
export db_url=<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
```

View File

@ -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:

Binary file not shown.

View File

@ -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

View File

@ -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;