Je développe actuellement une application vue. J'ai défini les variables d'environnement dans un fichier appelé "config.ts"
qui contient un code similaire à :
export const configs = { baseURL: process.env.VUE_APP_API_BASEURL || 'http://test.api.co/', }
J'ai testé les variables d'environnement localement en utilisant .env comme indiqué ci-dessous
VUE_APP_API_BASEURL=https://test2.api.com
Et ça marche très bien.
J'ai ensuite dockerisé l'application à l'aide d'un Dockerfile comme ceci :
FROM private_image_container/node:v16 as build-stage # declare args ARG VUE_APP_API_BASEURL # set env variables ENV VUE_APP_API_BASEURL=$VUE_APP_API_BASEURL RUN echo "VUE_APP_API_BASEURL=$VUE_APP_API_BASEURL" > .env WORKDIR /app COPY package.json ./ COPY yarn.lock ./ RUN yarn COPY . . RUN yarn build # production stage FROM private_image_container/nginx:latest as production-stage COPY --from=build-stage /app/dist /usr/share/nginx/html COPY nginx.conf /etc/nginx/nginx.conf EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
Lors du déploiement de l'application, les variables ne sont pas visibles même si elles sont définies dans la définition de la tâche.
J'ai donc rencontré ce problème parce que nos équipes DevOp ont insisté sur le fait que nous avions des variables d'environnement d'exécution.
La solution que j'ai développée était d'écrire un script bash qui injecte un script pour attacher la configuration à l'objet window, le rendant accessible en tant que runtime.