web-dev-qa-db-ja.com

環境変数をdocker-composeからNodeJSプロジェクトに渡す方法は?

NodeJSアプリケーションがあり、これをドッキングサイズにしたい。

アプリケーションは2つの部分で構成されています。

  • サーバー部分。DBからデータを取得するAPIを実行します。これはポート3000で実行されています。

  • クライアント部分。サーバー部分からAPIエンドポイントへの呼び出しを行っています。これはポート8080で実行されています。

これにより、クライアント部分に「server_address」という変数があり、値は「localhost:3000」です。しかし、ここに問題があります。両方のプロジェクトは、個別のDockerimageファイルにドッカーサイズにし、1つのdocker-compose.ymlファイルに結合する必要があります。

何らかの理由で、docker-compose.ymlファイルを介してdockerコンテナーを実行する必要があります。したがって、これらのものを何らかの形で接続し、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ファイルを参照していませんか?
6
delux

このように、node.jsコードでprocess.envを使用します

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"
11
prisar