Fix env variables

This commit is contained in:
Glenn Y. Rolland 2022-08-15 12:19:43 +02:00
parent 4822a1955a
commit 4e0b64e506
3 changed files with 51 additions and 0 deletions

View File

@ -1,2 +1,6 @@
FROM gitea/gitea:1.16.9
COPY entrypoint-wrapper parse-database-url /usr/bin/
RUN chmod 755 /usr/bin/entrypoint-wrapper /usr/bin/parse-database-url
ENTRYPOINT ["/usr/bin/entrypoint-wrapper"]

12
entrypoint-wrapper Executable file
View File

@ -0,0 +1,12 @@
#!/bin/sh
# vim: set ts=2 sw=2 et ft=bash:
eval "$(/usr/bin/parse-database-url "${DATABASE_URL:-}" GITEA__database__ |sed -e 's/^/export /')"
# Rename variables
GITEA__database__DB_TYPE="$GITEA__database__PROTO"
GITEA__database__PASSWD="$GITEA__database__PASS"
export GITEA__database__DB_TYPE
export GITEA__database__PASSWD
exec /usr/bin/entrypoint "$@"

35
parse-database-url Executable file
View File

@ -0,0 +1,35 @@
#!/bin/sh
# Referenced and tweaked from http://stackoverflow.com/questions/6174220/parse-url-in-shell-script#6174447
url="$1"
prefix="$2"
proto="$(echo "$url" | grep :// | sed -e 's,^\(.*\)://.*,\1,g')"
# remove the protocol
workurl="$(echo "$url" |sed -e "s,^$proto://,,")"
# extract the user (if any)
userpass="$(echo "$workurl" | grep @ | cut -d@ -f1)"
pass="$(echo "$userpass"| grep : | cut -d: -f2)"
if [ -n "$pass" ]; then
user="$(echo "$userpass" | grep : | cut -d: -f1)"
else
user="$userpass"
fi
# extract the host
hostport="$(echo "$workurl" |sed -e "s,$userpass@,," | cut -d/ -f1)"
# by request - try to extract the port
port="$(echo "$hostport" | sed -e 's,^.*:,:,g' -e 's,.*:\([0-9]*\).*,\1,g' -e 's,[^0-9],,g')"
host="$(echo "$hostport" | cut -d: -f1)"
# extract the path (if any)
path="/$(echo "$workurl" | grep / | cut -d/ -f2-)"
name="$(echo "$workurl" | grep / | cut -d/ -f2-)"
echo "${prefix}_URL=\"$url\""
echo "${prefix}_PROTO=\"$proto\""
echo "${prefix}_USER=\"$user\""
echo "${prefix}_PASS=\"$pass\""
echo "${prefix}_HOST=\"$host\""
echo "${prefix}_PORT=\"$port\""
echo "${prefix}_PATH=\"$path\""
echo "${prefix}_NAME=\"$name\""