diff --git a/Front-End/Dockerfile b/Front-End/Dockerfile index bcbb88d..e4f9948 100644 --- a/Front-End/Dockerfile +++ b/Front-End/Dockerfile @@ -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} diff --git a/Front-End/docker/entrypoint.sh b/Front-End/docker/entrypoint.sh index b1d3ccd..3b8d773 100644 --- a/Front-End/docker/entrypoint.sh +++ b/Front-End/docker/entrypoint.sh @@ -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 \ No newline at end of file +exec "$@" \ No newline at end of file diff --git a/Front-End/prod.env b/Front-End/prod.env new file mode 100644 index 0000000..cd1b68a --- /dev/null +++ b/Front-End/prod.env @@ -0,0 +1,2 @@ +NEXT_PUBLIC_API_URL=_NEXT_PUBLIC_API_URL_ +NEXT_PUBLIC_USE_FAKE_DATA=_NEXT_PUBLIC_USE_FAKE_DATA_ \ No newline at end of file diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index d77a9cd..ec0e204 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -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 \ No newline at end of file