2016-03-31 6 views
4

私は、Webサーバーとして機能し、http要求を処理するJavaアプリケーションをセットアップしました。私はそれがコンテナの外で動作することをテストしましたが(コンテナの中で)、コンテナ内でリクエストが届かないようです。ドッキング用のコンテナで実行されているサーバーにHTTPリクエストを送信するにはどうすればいいですか?

サーバーはポート3971をリッスンし、そしてDockerfileは次のようになります。

FROM java:8 
ADD VaultServer/
EXPOSE 3971 
EXPOSE 3972 
ENTRYPOINT ["java", "-jar", "VaultServer.jar"] 

(通常は私がhttp://localhost:3971/にGETを送信したい)何かを返す必要がありますルートアドレスに呼び出します。

「localhost」をdocker-machineのIPアドレスで置き換えようとしました。また、実行中のコンテナを自分のサーバーで調べてもどちらも応答しないようです。私がdocker-machineのIPアドレスを呼び出すと、私はERR_CONNECTION_REFUSEDを取得します。私は有効にする必要がある何か他にありますか?あなたがではなく、ホストマシン

あなたがホストマシンにポートを公開するに他のリンクコンテナにポートを公開3972を公開しているの

+1

ドッカーの実行コマンドラインは何ですか?ポート3972を公開しましたか? (-p 3972:3972) – Michael

+0

ちょうど「docker run vault-server」でした。申し訳ありませんが、私はまだドッカーをつかんでいます。 Dockerfileで公開する必要がある場合、なぜポートを公開する必要がありますか? – Andy

答えて

8

...

docker run -p 3972:3972 ....... etc 

あなたをまた、これはデフォルトではありません(ホストに公開によって公開されたすべてのポートを公開している...

docker run -P 

行うことができます - あなたが使用する必要があります。 -P flag here)

0

hockの "action =" http://192.168.99.100:8080/rest/data/ingest "を使って、Docker ContainerのRest Pathを参照してください。ライン、下のHTMLコードを参照してください。4.

http://192.168.99.100:8080/rest/data/ingest内訳:

1)192.168.99.100:8080=ドッカーのIPアドレス&ポート番号。

2)/休憩/ = web.xmlファイルで

3)データ/ = @Path( "/データ")

4)/( "/摂取")= @Pathを摂取します

HTMLのCODE:

<html> 
    <body> 
     <h1>Data Ingest: Web Uploader</h1>  
     <form action="http://192.168.99.100:8080/rest/data/ingest" method="post" enctype="multipart/form-data"> 

      <p>Select files 
: <input type="file" name="file" size="10000000" multiple/> </p> 
      <input type="submit" value="Upload Files"/> 
     </form> 
    </body> 
</html> 

Javaコード:

@Path("/data") 
public class YourClass { 

@POST 
@Path("/ingest") 
public Response yourMethod (...){ 
} 
+2

地獄の遺伝子...ローカルURLをハードコード! – yUdoDis

+1

そうです、あなたは正しいですが、アイデアを得ることができます。 – Gene

0

私はどのように他のコンテナ(MSSQLとElasticsearch)を使ってdotnet coreプロジェクトを作成するのかを示すことができます。

services: 

    prime.web: 
    image: prime.web 
    build: 
     context: ./Prime.Web 
     dockerfile: Dockerfile 
    links: 
     - sql.data 
     - elasticsearch 

    sql.data: 
    image: microsoft/mssql-server-linux 

    elasticsearch: 
    image: elasticsearch 

をそして、あなたはあなたのAppSettingファイルを上書きするドッキングウィンドウ-compose.override.ymlに書き込み、別の容器へのアクセスを取得します:

ドッカー-compose.ymlするには、別の容器の依存関係を追加します。

services: 

    prime.web: 
    environment: 
     - 'ConnectionStrings:primekinetics=Server=tcp:sql.data,1433;InitialCatalog=prime;User ID=sa;[email protected];Connection Timeout=30;'  
     - 'ElasticSearchConnection=http://elasticsearch:9200/' 
     - ASPNETCORE_ENVIRONMENT=Development  
    ports: 
     - "5105:80" 

    sql.data: 
    environment:  
     - [email protected] 
     - ACCEPT_EULA=Y 
    ports: 
     - "5433:1433" 

    elasticsearch:  
    ports: 
     - "9200:9200" 

私はそれが役に立ちそうです。

関連する問題