Как передать переменные окружения из docker-compose в проект NodeJS? - PullRequest
0 голосов
/ 04 октября 2018

У меня есть приложение NodeJS, которое я хочу иметь размер докера.

Приложение состоит из двух частей:

  • серверная часть, на которой работает API, которыйбрать данные из БД.Это выполняется на порту 3000;

  • клиентская часть, которая выполняет вызовы к конечным точкам API с серверной части.Это работает на порту 8080;

С этим у меня есть переменная с именем «server_address» в моей клиентской части, и она имеет значение «localhost: 3000».Но в том-то и дело, что оба проекта должны иметь размер докера в отдельных Dockerimage файлах и объединяться в один docker-compose.yml файл.

Поэтому по ряду причин мне приходится запускать док-контейнеры через файл docker-compose.yml.Так можно ли как-то соединить эти вещи и передать адрес сервера извне из dockerfile в проект 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"

оба Dockerfile выглядит так:

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

, имея эти файлы, у меня возникает проблема:

  • смогу ли я использовать переменнуюBACKEND_SERVER как-то в проекте?И если да, как это сделать?Я имею в виду не файл Dockerimage, а сам проект?

1 Ответ

0 голосов
/ 04 октября 2018

Используйте process.env в коде node.js, например:

process.env.BACKEND_SERVER

Упомяните вашу переменную в файле 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"
...