2016-09-17 10 views
0

私は公式ノード画像を使ってドッカーコンテナを作成しました。dockerコンテナからangle2 appにアクセスできない

docker pull node 

私はangle-cliを使用して角度2アプリを作成しました。

ng new docker-demo 

は、私は、次のコマンドを使用して、私のangular2アプリのディレクトリからの私のドッキングウィンドウコンテナを走った:

cd docker-demo 

&、ディレクトリ内:

docker run -p 8080:4200 -v $(pwd):/var/www -w "/var/www" node npm start 

のディレクトリのPWDスタンド私のangular2アプリ。

私のコンソールには、ローカルマシン上で実行されているように&がバンドルされているのがわかります。

が、私は私のドッキングウィンドウマシンのIPを使用して、私のブラウザからアクセスしてみてください:

http://192.168.99.100:8080/ 

それは動作しません。

PS:angular2 appはローカルシステムで完全に正常に動作します。

追加設定が必要ですか?

入力はありますか?

ありがとうございます。

+0

あなたの角型アプリケーションコンテナを最初に起動し、アプリケーションが実際に動作しているかどうかテストするには、curl: 'docker exec -it <角型アプリケーションコンテナID> curl localhost:4200'を実行します。それは動作しますか? – ronkot

答えて

0

あなたのドッキングウィンドウのコマンドは次のようにする必要があります:

  • docker run --rm --name my-container -it -p 8080:4200 -v $(pwd):/var/www -w "/var/www" node npm start 
    
    --rm - >あなたはそれが
  • -it停止するときに、コンテナを削除します - >出力
  • を記録folowます - 名前 - あなたの容器の名前をつける

ログに従いたい場合は-itが必要ですまたは-dログ出力を行わない場合は、

- あなたのコンテナの名前をあなたのコンテナの名前に簡単に記入してください。 -aは、すべてのコンテナが表示されます

docker ps -a 

は、包括的にはコンテナを立ち止まっ:

はあなたのコンテナの状態を確認するには。

は、ここで詳細を参照してください。Docker Documentation

+0

これを試しましたが、まだブラウザから私のangular2アプリにアクセスすることができませんでした。 –

+0

**ドッカーのps -a **ステータスが "Up ..."のコンテナを表示しますか? –

0

あなたはimage installation guideごとにポートを公開する必要があります。

あなたのノードでDockerfileを作成します。あなたのケースでそう

$ docker build -t my-nodejs-app . 
$ docker run -it --rm --name my-running-app my-nodejs-app 

:あなたはその後、ドッカーイメージをビルドして実行することができますjsのアプリプロジェクト

FROM node:4-onbuild 
# replace this with your application's default port 
EXPOSE 8888 

> ng new docker-demo 
> cd docker-demo 
> echo "FROM node:6.6.0-wheezy 
EXPOSE 4200" > Dockerfile 
> docker build -t my-nodejs-app . 
> docker run --rm --name docker-demo -p 8080:4200 -v $(pwd):/var/www -w "/var/www" my-nodejs-app npm start 

アプリ127.0.0.1:8080上でアクセス可能でなければなりません(127.0を交換してください。 0.1の関連ドッカーip)。

+1

Dockerfileを介してポートを公開する必要はありません。 'docker run -p 'を使用して、コンテナの任意のポートをいつでも公開することができます。 – ronkot

2

私にも同様の問題がありました。コンテナの開始コマンドとしてng serve --host 0.0.0.0を使用して修正できました。ビルド時に正しいポートを公開することを覚えておくことが重要です。 EXPOSE 4200またはDockerfileであなたのアプリを公開したい他のポートを使用していることを確認してください。 Angular2/4アプリのデフォルトは4200なので、ほとんどの時間が最適です。

Dockerを使用している場合は、同じことを行います。ポートを公開し、ng serveコマンドで適切な引数を使用することを忘れないでください。あなたと他の仲間のキャプテンが同じ問題を抱えているのを助けてくれることを願っています。

+0

ng serve --host 0.0.0.0がこのトリックを行った。ポートを露出している場合でも、明示的に指定されていない限り、angle自体はlocalhostの外部にホストすることを拒否します。ありがとう! –

関連する問題