Skip to content

Commit f97a7ad

Browse files
Tamas Pallospallost
authored andcommitted
Add script for reading docker secrets into environment variables
1 parent 2237996 commit f97a7ad

2 files changed

Lines changed: 81 additions & 0 deletions

File tree

README.md

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,47 @@
11
# jore4-tools
2+
23
Tools which are commonly used by other JORE4 projects
4+
5+
## Tools for Docker
6+
7+
### read-secrets.sh
8+
9+
Reads docker secrets into environment variables. Secrets' filenames are
10+
transformed into environment variable names with \_ characters replacing
11+
non-alphanumeric characters.
12+
13+
Parameters:
14+
15+
Reads secrets' bash path from `SECRET_STORE_BASE_PATH` env variable
16+
17+
Example setup:
18+
19+
```
20+
$ cat secrets/foo1
21+
bar1
22+
$ cat secrets/foo2-blabla
23+
bar2
24+
$ cat secrets/foo3.lol
25+
bar3.lolo
26+
```
27+
28+
Usage:
29+
30+
```
31+
$ SECRET_STORE_BASE_PATH=secrets source read-secrets.sh
32+
$ printenv
33+
[...]
34+
FOO1=bar1
35+
FOO2_BLABLA=bar2
36+
FOO3_LOL=bar3.lolo
37+
```
38+
39+
Usage within Dockerfile:
40+
41+
```
42+
# download script for reading docker secrets
43+
RUN curl -o /tmp/read-secrets.sh "https://raw.githubusercontent.com/HSLdevcom/jore4-tools/main/docker/read-secrets.sh"
44+
45+
# read docker secrets into environment variables and run application
46+
CMD /bin/bash -c "source /tmp/read-secrets.sh && java -jar /.../xxx.jar"
47+
```

docker/read-secrets.sh

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#!/bin/sh
2+
3+
set -eu
4+
5+
# Reads docker secrets into environment variables.
6+
# Secrets' filenames are transformed into environment variable names with _ characters replacing non-alphanumeric characters.
7+
#
8+
# parameters:
9+
# reads secrets' bash path from SECRET_STORE_BASE_PATH env variable
10+
#
11+
# example setup:
12+
# $ cat secrets/foo1
13+
# bar1
14+
# $ cat secrets/foo2-blabla
15+
# bar2
16+
# $ cat secrets/foo3.lol
17+
# bar3.lolo
18+
#
19+
# usage:
20+
# $ SECRET_STORE_BASE_PATH=secrets source read-secrets.sh
21+
# $ printenv
22+
# [...]
23+
# FOO1=bar1
24+
# FOO2_BLABLA=bar2
25+
# FOO3_LOL=bar3.lolo
26+
27+
# read docker secrets into environment variables
28+
SECRET_STORE_BASE_PATH="${SECRET_STORE_BASE_PATH:-/run/secrets}"
29+
for SECRET_FILENAME in $(ls "$SECRET_STORE_BASE_PATH");
30+
do
31+
# replace non-alphanumeric characters with _ and convert to uppercase
32+
VAR_NAME=$(echo $SECRET_FILENAME | sed -E 's/[^a-zA-Z0-9]+/_/g' | tr a-z A-Z)
33+
VAR_VALUE=$(cat "$SECRET_STORE_BASE_PATH/$SECRET_FILENAME")
34+
export "$VAR_NAME"="$VAR_VALUE"
35+
echo "Found secret '$SECRET_FILENAME', exported it as '$VAR_NAME' environment variable."
36+
done

0 commit comments

Comments
 (0)