1
0

Add ability to override any configs with env

Use environemnt variables to override any value in config.php

Also, locked version on the ubuntu image to something that actually
builds.
This commit is contained in:
ViViDboarder 2016-11-27 19:10:49 -08:00
parent adacce4ba1
commit 6f3dff46d1
3 changed files with 26 additions and 5 deletions

View File

@ -1,4 +1,4 @@
FROM ubuntu
FROM ubuntu:14.04
MAINTAINER Christian Lück <christian@lueck.tv>
RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y \

View File

@ -164,6 +164,18 @@ For more information check out the [official documentation](https://github.com/g
-e SELF_URL_PATH=https://example.org/ttrss
```
### Additional configuration
In addition to the environement variables above, it is possible to override any value in the `config.php`
by using another environment variable. Prefix the config value you want to override with `CONFIG_`
and it will replace the default value on container creation.
For example, to add the `auth_external` plugin, set the following variable:
```
-e CONFIG_PLUGINS='auth_internal, note, auth_external'
```
### Testing ttrss in foreground
For testing purposes it's recommended to initially start this container in foreground.

View File

@ -63,7 +63,7 @@ if (!dbcheck($config)) {
$super['DB_NAME'] = null;
$super['DB_USER'] = env('DB_ENV_USER', 'docker');
$super['DB_PASS'] = env('DB_ENV_PASS', $super['DB_USER']);
$pdo = dbconnect($super);
if ($super['DB_TYPE'] === 'mysql') {
@ -75,7 +75,7 @@ if (!dbcheck($config)) {
}
unset($pdo);
if (dbcheck($config)) {
echo 'Database login created and confirmed' . PHP_EOL;
} else {
@ -100,6 +100,15 @@ catch (PDOException $e) {
unset($pdo);
}
$config_prefix = 'CONFIG_';
foreach ($_SERVER as $name => $value) {
if (strpos($name, $config_prefix) === 0) {
$name = substr($name, strlen($config_prefix));
echo 'Getting config from env: ' . $name . PHP_EOL;
$config[$name] = $value;
}
}
$contents = file_get_contents($confpath);
foreach ($config as $name => $value) {
$contents = preg_replace('/(define\s*\(\'' . $name . '\',\s*)(.*)(\);)/', '$1"' . $value . '"$3', $contents);
@ -109,11 +118,11 @@ file_put_contents($confpath, $contents);
function env($name, $default = null)
{
$v = getenv($name) ?: $default;
if ($v === null) {
error('The env ' . $name . ' does not exist');
}
return $v;
}