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 "$@"