feat: add docker files

adds compose.yml, Dockerfile and entrypoint.sh for running the backend inside of docker
This commit is contained in:
Radical 2025-05-01 01:09:24 +02:00
parent 026d48c6e7
commit c69f2eb4f0
3 changed files with 94 additions and 0 deletions

19
Dockerfile Normal file
View file

@ -0,0 +1,19 @@
FROM debian:12
RUN apt update && apt install libssl3 && rm -rf /var/lib/apt/lists/* /var/cache/apt/* /tmp/*
COPY target/release/backend /usr/bin/gorb-backend
COPY entrypoint.sh /usr/bin/entrypoint.sh
RUN useradd --create-home --home-dir /gorb gorb
USER gorb
ENV DATABASE_USERNAME="gorb"
ENV DATABASE_PASSWORD="gorb"
ENV DATABASE="gorb"
ENV DATABASE_HOST="localhost"
ENV DATABASE_PORT="5432"
ENTRYPOINT ["/usr/bin/entrypoint.sh"]

33
compose.yml Normal file
View file

@ -0,0 +1,33 @@
version: '3.5'
volumes:
gorb-backend:
gorb-database:
networks:
gorb:
services:
backend:
image: gorb/backend:latest
restart: always
ports:
- 8080:8080
networks:
- gorb
volumes:
- gorb-backend:/gorb
environment:
- DATABASE_USERNAME=gorb
- DATABASE_PASSWORD=gorb
- DATABASE=gorb
- DATABASE_HOST=database
- DATABASE_PORT=5432
database:
image: postgres:16
restart: always
networks:
- gorb
volumes:
- gorb-database:/var/lib/postgresql/data
environment:
- POSTGRES_USER=gorb
- POSTGRES_PASSWORD=gorb
- POSTGRES_DB=gorb

42
entrypoint.sh Executable file
View file

@ -0,0 +1,42 @@
#!/bin/sh
if [ ! -d "/gorb/config" ]; then
mkdir /gorb/config
fi
if [ ! -d "/gorb/logs" ]; then
mkdir /gorb/logs
fi
if [ ! -f "/gorb/config/config.toml" ]; then
cat > /gorb/config/config.toml <<EOF
[database]
username = "${DATABASE_USERNAME}"
password = "${DATABASE_PASSWORD}"
database = "${DATABASE}"
host = "${DATABASE_HOST}"
port = ${DATABASE_PORT}
EOF
fi
rotate_log() {
LOGFILE="$1"
BASENAME=$(basename "$LOGFILE" .log)
DIRNAME=$(dirname "$LOGFILE")
if [ -f "$LOGFILE" ]; then
# Find the next available number
i=1
while [ -f "$DIRNAME/${BASENAME}.${i}.log.gz" ]; do
i=$((i + 1))
done
gzip "$LOGFILE"
mv "${LOGFILE}.gz" "$DIRNAME/${BASENAME}.${i}.log.gz"
fi
}
rotate_log "/gorb/logs/stdout.log"
rotate_log "/gorb/logs/stderr.log"
/usr/bin/gorb-backend --config /gorb/config/config.toml > /gorb/logs/stdout.log 2> /gorb/logs/stderr.log