mirror of
https://github.com/fnproject/fn.git
synced 2022-10-28 21:29:17 +03:00
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:
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 |
|
||||||
|
|||||||
Reference in New Issue
Block a user