mirror of
https://github.com/minoplhy/chhoto-url.git
synced 2024-11-22 09:16:46 +00:00
- Published to Docker HUB;
- Updated to Java 14 - A bunch of changes I wanted to do earlier
This commit is contained in:
parent
218f2fa368
commit
e9cf90cea7
@ -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
|
||||
|
||||
|
40
README.md
40
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=<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
|
||||
```
|
||||
|
@ -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:
|
||||
|
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
5
gradle/wrapper/gradle-wrapper.properties
vendored
5
gradle/wrapper/gradle-wrapper.properties
vendored
@ -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
|
||||
|
@ -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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user