diff options
author | zeripath <art27@cantab.net> | 2019-12-28 00:49:42 +0000 |
---|---|---|
committer | Lunny Xiao <xiaolunwen@gmail.com> | 2019-12-28 08:49:42 +0800 |
commit | 884173232fa036b032f77d5a10d78e695e96b5de (patch) | |
tree | c4ffc2ed43286a5124ab475fccc3718f6cd10ea8 /contrib/environment-to-ini/README | |
parent | 4ee97465e97ae6b9d3ac6ea57246f67715246afe (diff) | |
download | gitea-884173232fa036b032f77d5a10d78e695e96b5de.tar.gz gitea-884173232fa036b032f77d5a10d78e695e96b5de.zip |
Add contrib/environment-to-ini (#9519)
* Add contrib/environment-to-ini
This contrib command provides a mechanism to allow arbitrary setting
of ini values using the environment variable in a more docker standard
fashion.
Environment variable keys should be structured as:
"GITEA__SECTION_NAME__KEY_NAME"
Use of the command is explained in the README.
Partial fix for #350
Closes #7287
* Update contrib/environment-to-ini/environment-to-ini.go
Co-Authored-By: 6543 <6543@obermui.de>
Co-authored-by: Antoine GIRARD <sapk@users.noreply.github.com>
Co-authored-by: 6543 <6543@obermui.de>
Diffstat (limited to 'contrib/environment-to-ini/README')
-rw-r--r-- | contrib/environment-to-ini/README | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/contrib/environment-to-ini/README b/contrib/environment-to-ini/README new file mode 100644 index 0000000000..642a82d28e --- /dev/null +++ b/contrib/environment-to-ini/README @@ -0,0 +1,66 @@ +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 + |