web-dev-qa-db-fra.com

Comment passer des variables d'environnement de docker-compose dans le projet NodeJS?

J'ai une application NodeJS que je veux agrandir.

L'application se compose de deux parties:

  • partie serveur, exécutant une API qui prend des données d'une base de données. Cela fonctionne sur le port 3000;

  • partie client, qui effectue des appels aux points de terminaison API à partir de la partie serveur. Cela s'exécute sur le port 8080;

Avec cela, j'ai une variable nommée "adresse_serveur" dans ma partie client et elle a la valeur de "localhost: 3000". Mais voilà, les deux projets doivent être de la taille d'un docker dans des fichiers Dockerimage séparés et combinés dans un docker-compose.yml fichier.

Donc, pour certaines raisons, je dois exécuter les conteneurs Docker via docker-compose.yml fichier. Est-il donc possible de connecter ces choses d'une manière ou d'une autre et de passer l'adresse du serveur en externe de dockerfile au projet NodeJS?

docker-composer.yml

version: "3"
services:
  client-side-app:
    image: my-client-side-docker-image
    environment:
      - BACKEND_SERVER="here we need to enter backend server"
    ports:
      - "8080:8080"
  server-side-app:
    image: my-server-side-docker-image
    ports:
      - "3000:3000"

les deux Dockerfile ressemble à:

FROM node:8.11.1
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD ["npm", "run", "dev"]

en ayant ces fichiers, j'ai le souci:

  • pourrai-je utiliser la variable BACKEND_SERVER en quelque sorte dans le projet? Et si oui, comment faire? Je ne fais pas référence au fichier Dockerimage, mais plutôt au projet lui-même?
6
delux

Utilisez process.env dans le code node.js, comme ceci

process.env.BACKEND_SERVER

Mentionnez votre variable dans le fichier docker-compose.

version: "3"
services:
  client-side-app:
    image: my-client-side-docker-image
    environment:
      - BACKEND_SERVER="here we need to enter backend server"
    ports:
      - "8080:8080"
  server-side-app:
    image: my-server-side-docker-image
    ports:
      - "3000:3000"
11
prisar