From 82b5c8ab0795fe98026142eadbcee3f225997de0 Mon Sep 17 00:00:00 2001 From: Hadley Rich Date: Mon, 30 Dec 2024 22:46:02 +1300 Subject: [PATCH] feat: add sh entrypoint to allow MEMOS_DSN_FILE to load variable from secret (#4236) Add sh entrypoint to allow MEMOS_DSN_FILE to load variable from secret --- Dockerfile | 3 ++- entrypoint.sh | 27 +++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100755 entrypoint.sh diff --git a/Dockerfile b/Dockerfile index af35f19a..8ebee92d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -27,6 +27,7 @@ RUN apk add --no-cache tzdata ENV TZ="UTC" COPY --from=backend /backend-build/memos /usr/local/memos/ +COPY entrypoint.sh /usr/local/memos/ EXPOSE 5230 @@ -37,4 +38,4 @@ VOLUME /var/opt/memos ENV MEMOS_MODE="prod" ENV MEMOS_PORT="5230" -ENTRYPOINT ["./memos"] +ENTRYPOINT ["./entrypoint.sh", "./memos"] diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100755 index 00000000..a73f4013 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env sh + +file_env() { + var="$1" + fileVar="${var}_FILE" + + val_var="$(printenv "$var")" + val_fileVar="$(printenv "$fileVar")" + + if [ -n "$val_var" ] && [ -n "$val_fileVar" ]; then + echo "error: both $var and $fileVar are set (but are exclusive)" >&2 + exit 1 + fi + + if [ -n "$val_var" ]; then + val="$val_var" + elif [ -n "$val_fileVar" ]; then + val="$(cat "$val_fileVar")" + fi + + export "$var"="$val" + unset "$fileVar" +} + +file_env "MEMOS_DSN" + +exec "$@"