mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-04 10:30:19 -05:00
67 lines
2.2 KiB
Text
67 lines
2.2 KiB
Text
|
Environment To Ini
|
||
|
==================
|
||
|
|
||
|
Multiple docker users have requested that the Gitea docker is changed
|
||
|
to permit arbitrary configuration via environment variables.
|
||
|
|
||
|
Gitea needs to use an ini file for configuration because the running
|
||
|
environment that starts the docker may not be the same as that used
|
||
|
by the hooks. An ini file also gives a good default and means that
|
||
|
users do not have to completely provide a full environment.
|
||
|
|
||
|
With those caveats above, this command provides a generic way of
|
||
|
converting suitably structured environment variables into any ini
|
||
|
value.
|
||
|
|
||
|
To use the command is very simple just run it and the default gitea
|
||
|
app.ini will be rewritten to take account of the variables provided,
|
||
|
however there are various options to give slightly different
|
||
|
behavior and these can be interrogated with the `-h` option.
|
||
|
|
||
|
The environment variables should be of the form:
|
||
|
|
||
|
GITEA__SECTION_NAME__KEY_NAME
|
||
|
|
||
|
Environment variables are usually restricted to a reduced character
|
||
|
set "0-9A-Z_" - in order to allow the setting of sections with
|
||
|
characters outside of that set, they should be escaped as following:
|
||
|
"_0X2E_" for ".". The entire section and key names can be escaped as
|
||
|
a UTF8 byte string if necessary. E.g. to configure:
|
||
|
|
||
|
"""
|
||
|
...
|
||
|
[log.console]
|
||
|
COLORIZE=false
|
||
|
STDERR=true
|
||
|
...
|
||
|
"""
|
||
|
|
||
|
You would set the environment variables: "GITEA__LOG_0x2E_CONSOLE__COLORIZE=false"
|
||
|
and "GITEA__LOG_0x2E_CONSOLE__STDERR=false". Other examples can be found
|
||
|
on the configuration cheat sheet.
|
||
|
|
||
|
To plug this command in to the docker, you simply compile the provided go file using:
|
||
|
|
||
|
go build environment-to-ini.go
|
||
|
|
||
|
And copy the resulting `environment-to-ini` command to /app/gitea in the docker.
|
||
|
|
||
|
Apply the below patch to /etc/s6/gitea.setup to wire this in.
|
||
|
|
||
|
If you find this useful please comment on #7287
|
||
|
|
||
|
|
||
|
diff --git a/docker/root/etc/s6/gitea/setup b/docker/root/etc/s6/gitea/setup
|
||
|
index f87ce9115..565bfcba9 100755
|
||
|
--- a/docker/root/etc/s6/gitea/setup
|
||
|
+++ b/docker/root/etc/s6/gitea/setup
|
||
|
@@ -44,6 +44,8 @@ if [ ! -f ${GITEA_CUSTOM}/conf/app.ini ]; then
|
||
|
SECRET_KEY=${SECRET_KEY:-""} \
|
||
|
envsubst < /etc/templates/app.ini > ${GITEA_CUSTOM}/conf/app.ini
|
||
|
|
||
|
+ /app/gitea/environment-to-ini -c ${GITEA_CUSTOM}/conf/app.ini
|
||
|
+
|
||
|
chown ${USER}:git ${GITEA_CUSTOM}/conf/app.ini
|
||
|
fi
|
||
|
|