2017-02-14 6 views
0

私はドッカーで新しいです。私のシナリオについて説明しましょう: ウェブアプリケーション用に2つのドッカー画像を作成しました。 1つのイメージはプレゼンテーション用のフロントエンドWebレイヤーであり、もう1つはRESTサービスを提供するバックエンドレイヤーです。バックエンドサービスを呼び出すためにdockerイメージでハードコードされていないURLパスを作成する方法

この2つの画像のために2つのコンテナを実行する必要があります。フロントエンドはバックエンドでサービスを呼び出します。今私はバックエンドのURLをフロントエンドのコードに書いてイメージを構築する必要があります...これはマイクロサービスのための正しい方法だとは思わない...

私のラップトップのIPが変更された場合など私のイメージを使用したいと思う、彼らはサービスを得ることができない...それでは、URL変数を作り、私のフロントエンドイメージを再構築せずに他人に使うことができるのですか?

Thx!

答えて

0

実行時に環境変数をドッキングコンテナに渡すことで、これを行うことができます。

このような何か:

docker run --name frontend -e MY_APP_BACKEND_IP="192.168.7.2" -e MY_APP_BACKEND_PORT="3000" ... 

とバックエンドに、あなたはNodeJSを使用しているとしましょう、あなたが行うことができます:

var backend_ip = process.env.MY_APP_BACKEND_IP; 

注:未NodeJSのプロが、いくつかのグーグルを私にそれを行う方法を教えました

1

Docker 1.10からnetworkingを使用できます。これは、ドッカーコンテナのIPアドレスを、コンテナで使用できるホスト名にバインドします。

を使用すると、ネットワークが自動的に作成され、2つのサービスが互いに話すことができます。ここでは1の例である:

version: "2" 

services: 
    frontend: 
    image: nginx 
    networks: 
     - my-network 
    environment: 
     BACKEND_URL: "http://backend" 
    backend: 
    image: mariadb 
    networks: 
     - my-network 
    environment: 
     FRONTEND_URL: "http://frontend" 

networks: 
    my-network: 
    driver: bridge 

あなたが利用可能Getting started with multi-host networkinghereにこれについての詳細を読むことができるか、私はあなたが `BACKEND_URLを意味だと思う。このComposing Multi-container Networks with Docker Compose

+1

のようなガイドに従うことができます:「のhttp://バックエンド"' – Matt

+0

おかげで@マット – jrbeverly

+0

@ jrbeverlyありがとう!こうして私は私の問題を解決しました! –

関連する問題