2017-05-25 20 views
1

私はdotnetコアで書いた小さなWebApiでDockerを試しています。.Net Core WebApiはDockerコンテナでの接続を拒否します

私はdotnet runでそれを実行すると正常に動作し、ポート5000で到達可能であるため、Apiはうまく動作しているようです。しかし、Dockerコンテナで実行すると、起動しますが、公開された/マップされたポート。私はVirtualBox with Windows 10でDockerを実行しています。

マイDockerfileは次のようになります。

docker build -t api-test:v0 . 

そして、このコマンドでそれを実行します:

docker run -p 5000:5000 api-test:v0 

の出力

FROM microsoft/aspnetcore-build:latest 
COPY . /app 
WORKDIR /app 
RUN dotnet restore 
EXPOSE 5000 
ENV ASPNETCORE_URLS http://*:5000 
ENTRYPOINT ["dotnet", "run"] 

私はこのようなdontainerを構築しています実行コマンド:

Hosting environment: Production 
Content root path: /app 
Now listening on: http://localhost:5000 

は、私はまた、URLを結合する様々なアプローチを試してみました:CLI経由

  • http://+:5000http://0.0.0.0:5000http://localhost:5000として、...

成功せず--urls/--server.urlsパラメータ。誰かが私が間違っているか紛失しているのか見ていますか

+0

オペレーティングシステムとは何ですか?それはwindows/osxかlinuxですか? – pizycki

+0

私は言及を忘れた。これはWindows上で実行されています... IPについては、 –

+0

の 'docker inspect -f '{{range .NetworkSettings.Networks}} {{。IPAddress}} {{end}}' 'という質問で更新しました。 'localhost'をIPに置き換えます。それが動作するかどうかを確認します。 – pizycki

答えて

0
Now listening on: http://localhost:5000 

シナリオでは、ローカルホストへのバインドは機能しません。ドッカーポート転送が機能するには、アプリケーションを0.0.0.0にバインドする必要があります。あなたがそれを行うならば、あなたは5000

+0

あなたの答えをありがとう。私はちょうどそれを試しましたが、まだ運がありません –

+0

@DanielLerps、あなたのVM VirtualBoxはIP LANネットワークに到達可能ですか?私はそれがポイントだと思う – Robert

1
  1. は、あなたのサービスがhttp://*:500または類似の(実行しているとき、それはlocalhostを印刷した場合、それは勝っ使用して、すべてのポートでリッスンしていることを確認し、ポートVM IP上のアプリを達することができるはずですt仕事)。
  2. VirtualBoxでドッカー環境を設定し、ドッカーコンテナを実行する仮想マシンのIPアドレスを使用する必要があります。 IPアドレスはdocker-machine ip defaultです。
0

私はこの方法を見つけました。 launchSettings.jsonを編集して、アプリ設定の"applicationUrl": "http://*:5000/"に変更するだけです。イメージを構築します。次に、コンテナdocker exec container_id ipconfigのget ipアドレスを実行した後で、イメージdocker run -d -p 81:5000 aspnetcoreappを実行します。その後、ブラウザhttp://container_ip:5000/api/values。何らかの理由でそれが動作しないhttp://localhost:81はまだそれがなぜあるか把握する必要があります。

関連する問題