Skip to content

Instantly share code, notes, and snippets.

@soloman1124
Created April 17, 2021 12:32
Show Gist options
  • Select an option

  • Save soloman1124/cdcf8e603f3064b2b49d614c6ed45a92 to your computer and use it in GitHub Desktop.

Select an option

Save soloman1124/cdcf8e603f3064b2b49d614c6ed45a92 to your computer and use it in GitHub Desktop.
entrypoint.sh for docker secret
#!/usr/bin/env sh
: ${ENV_SECRET_DIR:=/run/secrets}
beginswith() { case $2 in "$1"*) true;; *) false;; esac; }
dksec_expand() {
for env_var in $(printenv)
do
value=$(echo $env_var | cut -d"=" -f2)
if beginswith "dksec://" $value;
then
key=$(echo $env_var | cut -d"=" -f1)
value=${value#"dksec://"}
value=$(cat $ENV_SECRET_DIR/$value)
export "$key"="$value"
fi
done
}
dksec_expand
exec "$@"
@soloman1124
Copy link
Author

soloman1124 commented Apr 17, 2021

Inspired by https://gist.github.com/bvis/b78c1e0841cfd2437f03e20c1ee059fe

Usage

Support loading environment vars from docker secrets with syntax like:

TEST_VAR=dksecret://db_password

it will then lookup files in /run/secrets/db_password

Dockerfile

it can be included in docker file with the following:

RUN wget -q -O /usr/src/app/entrypoint.sh https://gist.githubusercontent.com/soloman1124/cdcf8e603f3064b2b49d614c6ed45a92/raw \
    && chmod 755 /usr/src/app/entrypoint.sh

ENTRYPOINT [ "/usr/src/app/entrypoint.sh" ]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment