mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-08-09 15:35:22 +02:00
fix: Pass env variables through app
This commit is contained in:
parent
8307064f3e
commit
a37c9810bf
2 changed files with 81 additions and 4 deletions
|
@ -6,7 +6,8 @@
|
||||||
FROM node:16.18.1 as builder
|
FROM node:16.18.1 as builder
|
||||||
|
|
||||||
WORKDIR /app
|
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
|
# Install dependencies
|
||||||
RUN yarn install --production=false
|
RUN yarn install --production=false
|
||||||
|
|
||||||
|
@ -15,10 +16,10 @@ RUN yarn install --production=false
|
||||||
# ------------------------------------------
|
# ------------------------------------------
|
||||||
FROM node:16.18.1-slim as prod
|
FROM node:16.18.1-slim as prod
|
||||||
|
|
||||||
# Used for container health checks
|
# Used for container health checks and env handling
|
||||||
RUN apt-get update && apt-get install curl -y
|
RUN apt-get update && apt-get install curl gawk -y
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
USER node
|
USER node
|
||||||
COPY --from=builder /app .
|
COPY --from=builder /app .
|
||||||
|
|
||||||
CMD ["npx", "next", "start"]
|
CMD ["./env.sh", "npx", "next", "start"]
|
||||||
|
|
76
apps/client/env.sh
Normal file
76
apps/client/env.sh
Normal 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 "$@"
|
Loading…
Add table
Add a link
Reference in a new issue