1
0
Fork 0
mirror of https://github.com/maybe-finance/maybe.git synced 2025-08-09 07:25:19 +02:00

fix: Pass env variables through app

This commit is contained in:
Six 2024-01-17 00:00:21 -08:00
parent 8307064f3e
commit a37c9810bf
No known key found for this signature in database
GPG key ID: 00148D3869C21E43
2 changed files with 81 additions and 4 deletions

View file

@ -6,7 +6,8 @@
FROM node:16.18.1 as builder
WORKDIR /app
COPY ./dist/apps/client ./yarn.lock ./prisma ./package.json ./
COPY ./dist/apps/client ./yarn.lock ./prisma ./package.json ./apps/client/env.sh ./
RUN chmod +x ./env.sh
# Install dependencies
RUN yarn install --production=false
@ -15,10 +16,10 @@ RUN yarn install --production=false
# ------------------------------------------
FROM node:16.18.1-slim as prod
# Used for container health checks
RUN apt-get update && apt-get install curl -y
# Used for container health checks and env handling
RUN apt-get update && apt-get install curl gawk -y
WORKDIR /app
USER node
COPY --from=builder /app .
CMD ["npx", "next", "start"]
CMD ["./env.sh", "npx", "next", "start"]

76
apps/client/env.sh Normal file
View file

@ -0,0 +1,76 @@
#!/bin/bash
# https://github.com/vercel/next.js/discussions/17641#discussioncomment-5919914
# Config
ENVSH_ENV="${ENVSH_ENV:-"./.env"}"
ENVSH_PREFIX="${ENVSH_PREFIX:-"NEXT_PUBLIC_"}"
ENVSH_PREFIX_STRIP="${ENVSH_PREFIX_STRIP:-true}"
# Can be `window.__appenv = {` or `const APPENV = {` or whatever you want
ENVSH_PREPEND="${ENVSH_PREPEND:-"window.__appenv = {"}"
ENVSH_APPEND="${ENVSH_APPEND:-"}"}"
ENVSH_OUTPUT="${ENVSH_OUTPUT:-"./public/__appenv.js"}"
[ -f "$ENVSH_ENV" ] && INPUT="$ENVSH_ENV" || INPUT=/dev/null
# Add assignment
echo "$ENVSH_PREPEND" >"$ENVSH_OUTPUT"
gawk -v PREFIX="$ENVSH_PREFIX" -v STRIP_PREFIX="$ENVSH_PREFIX_STRIP" '
BEGIN {
OFS=": ";
FS="=";
PATTERN="^" PREFIX;
for (v in ENVIRON)
if (v ~ PATTERN)
vars[v] = ENVIRON[v]
}
$0 ~ PATTERN {
v = $2;
for (i = 3; i <= NF; i++)
v = v FS $i;
vars[$1] = (vars[$1] ? vars[$1] : v);
}
END {
for (v in vars) {
val = vars[v];
switch (val) {
case /^true$/:
break;
case /^false$/:
break;
case /^'"'.*'"'$/:
break;
case /^".*"$/:
break;
case /^[[:digit:]]+$/:
break;
default:
val = "\"" val "\"";
break;
}
val = val ","
if (STRIP_PREFIX == "true" || STRIP_PREFIX == "1")
v = gensub(PATTERN, "", 1, v)
print v, val;
}
}
' "$INPUT" >>"$ENVSH_OUTPUT"
echo "$ENVSH_APPEND" >>"$ENVSH_OUTPUT"
# Accepting commands (for Docker)
exec "$@"