From 6f3dff46d11f6e7f2940bfe4caecbd36a6afee37 Mon Sep 17 00:00:00 2001 From: ViViDboarder Date: Sun, 27 Nov 2016 19:10:49 -0800 Subject: [PATCH] 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. --- Dockerfile | 2 +- README.md | 12 ++++++++++++ configure-db.php | 17 +++++++++++++---- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index a023345..99bdaa1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu +FROM ubuntu:14.04 MAINTAINER Christian Lück RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y \ diff --git a/README.md b/README.md index a884f7c..f7d2c62 100644 --- a/README.md +++ b/README.md @@ -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. diff --git a/configure-db.php b/configure-db.php index 8f9b1e3..6582193 100644 --- a/configure-db.php +++ b/configure-db.php @@ -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; }