Support _FILE postfixes for environment variables (#1142)

* Support _FILE postfixes for environment variables to be loaded from files

* fix gofmt error
This commit is contained in:
james h
2018-07-30 20:13:06 +02:00
committed by Reed Allman
parent e7188d0e30
commit 61d42e7621
2 changed files with 25 additions and 0 deletions

View File

@@ -2,10 +2,12 @@ package server
import ( import (
"context" "context"
"io/ioutil"
"os" "os"
"os/signal" "os/signal"
"runtime" "runtime"
"strconv" "strconv"
"strings"
"syscall" "syscall"
"github.com/fnproject/fn/api/common" "github.com/fnproject/fn/api/common"
@@ -21,6 +23,11 @@ func init() {
func getEnv(key, fallback string) string { func getEnv(key, fallback string) string {
if value, ok := os.LookupEnv(key); ok { if value, ok := os.LookupEnv(key); ok {
return value return value
} else if value, ok := os.LookupEnv(key + "_FILE"); ok {
dat, err := ioutil.ReadFile(value)
if err == nil {
return string(dat)
}
} }
return fallback return fallback
} }
@@ -34,6 +41,16 @@ func getEnvInt(key string, fallback int) int {
panic(err) // not sure how to handle this panic(err) // not sure how to handle this
} }
return i return i
} else if value, ok := os.LookupEnv(key + "_FILE"); ok {
dat, err := ioutil.ReadFile(value)
if err == nil {
var err error
var i int
if i, err = strconv.Atoi(strings.TrimSpace(string(dat))); err != nil {
panic(err) // not sure how to handle this
}
return i
}
} }
return fallback return fallback
} }

View File

@@ -19,6 +19,14 @@ docker run. For example:
docker run -e VAR_NAME=VALUE ... docker run -e VAR_NAME=VALUE ...
``` ```
Additionally you may desire to load the environment variables from files, for example if you are using Docker Secrets, in that case you may append
`_FILE` to the end of any variable name and specify the file location. The variable will be filled with the file's contents. For example:
```sh
docker run -e VAR_NAME_FILE=/path/to/secret ...
```
| Env Variables | Description | Default values | | Env Variables | Description | Default values |
| --------------|-------------|----------------| | --------------|-------------|----------------|
| `FN_DB_URL` | The database URL to use in URL format. See [Databases](databases/README.md) for more information. | sqlite3:///app/data/fn.db | | `FN_DB_URL` | The database URL to use in URL format. See [Databases](databases/README.md) for more information. | sqlite3:///app/data/fn.db |