fix: inject env var

This commit is contained in:
Luc SORIGNET
2025-02-17 10:54:43 +01:00
parent 44c28d0aa0
commit fc337b1e0b
4 changed files with 17 additions and 49 deletions

View File

@ -7,6 +7,7 @@ WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci
COPY . .
COPY prod.env .env
RUN npm run build
# Development stage
@ -38,7 +39,7 @@ USER nextjs
ENV HOSTNAME="0.0.0.0"
EXPOSE 3000
ENTRYPOINT ["/app/entrypoint.sh"]
CMD ["node", "server.js"]
# Final stage selection
FROM ${BUILD_MODE}

View File

@ -1,58 +1,24 @@
#!/bin/sh
# Configuration des chemins
CONFIG_FILE="/app/server.js"
TEMP_FILE="/app/server.tmp.js"
ENV_FILE="/app/.env"
# Fonction pour échapper les caractères spéciaux
escape_value() {
echo "$1" | sed 's/[\/&]/\\&/g'
}
# Copie initiale du fichier
cp $CONFIG_FILE $TEMP_FILE
replace_value() {
key=$1
value=$2
file=$3
escaped_value=$(escape_value "$value")
find . -type f -exec sed -i "s|_${key}_|${value}|g" {} \;
}
# Lecture du fichier .env s'il existe
if [ -f "$ENV_FILE" ]; then
echo "📄 Lecture des variables depuis ${ENV_FILE}"
while IFS='=' read -r key value || [ -n "$key" ]; do
# Ignorer les lignes vides ou commentaires
case $key in
''|\#*) continue ;;
esac
printenv | grep NEXT_PUBLIC_ | while read -r line ; do
key=$(echo $line | cut -d "=" -f1)
value=$(echo $line | cut -d "=" -f2)
# Nettoyage des variables
key=$(echo "$key" | tr -d ' ')
value=$(echo "$value" | tr -d '"' | tr -d "'")
# Vérifier si c'est une variable NEXT_PUBLIC
case $key in
NEXT_PUBLIC_*)
escaped_value=$(escape_value "$value")
sed -i "s|\"${key}\":\"[^\"]*\"|\"${key}\":\"${escaped_value}\"|g" $TEMP_FILE
echo "Configuration depuis .env : ${key}=${value}"
;;
esac
done < "$ENV_FILE"
fi
# Parcours des variables d'environnement (priorité sur .env)
echo "Vérification des variables d'environnement"
env | grep '^NEXT_PUBLIC_' | while read -r line; do
var_name=$(echo "$line" | cut -d= -f1)
var_value=$(echo "$line" | cut -d= -f2-)
escaped_value=$(escape_value "$var_value")
sed -i "s|\"${var_name}\":\"[^\"]*\"|\"${var_name}\":\"${escaped_value}\"|g" $TEMP_FILE
echo "Override depuis ENV : ${var_name}=${var_value}"
replace_value $key $value /app/
done
# Mise à jour du fichier de configuration
mv $TEMP_FILE $CONFIG_FILE
echo "Configuration mise à jour avec succès"
# Démarrage du serveur
echo "Démarrage du serveur Next.js"
exec node server.js
exec "$@"

2
Front-End/prod.env Normal file
View File

@ -0,0 +1,2 @@
NEXT_PUBLIC_API_URL=_NEXT_PUBLIC_API_URL_
NEXT_PUBLIC_USE_FAKE_DATA=_NEXT_PUBLIC_USE_FAKE_DATA_

View File

@ -40,7 +40,6 @@ services:
environment:
- TZ=Europe/Paris
- NODE_ENV=production
volumes:
- ./conf/env:/app/.env
- NEXT_PUBLIC_API_URL=http://toto:8080
depends_on:
- backend