Env variables for Vue.js in Nginx container
The default approach for Vue.js is to use .env files during build stage. But I like more this one
with envsubst
. There is no need to rebuild image for each environment or when the configuration is changed.
Here is a small modification for entrypoint.sh
, so it can replace all variables with VUE_APP_
prefix.
#!/bin/sh
function join_by { local IFS="$1"; shift; echo "$*"; }
# Find vue env vars
vars=$(env | grep VUE_APP_ | awk -F = '{print "$"$1}')
vars=$(join_by ' ' $vars)
echo "Found variables $vars"
for file in /dist/js/app.*;
do
echo "Processing $file ...";
# Use the existing JS file as template
cp $file $file.tmpl
envsubst "$vars" < $file.tmpl > $file
rm $file.tmpl
done
exec "$@"