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
ファイルを参照していませんか?このように、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"