2017-08-20 8 views
2

ドッキングウィンドウコンテナのホスト上でgolangアプリを実行すると、TLSハンドシェイクタイムアウトをこれが私のコードです:ネット/ HTTP GET:

func Login(w http.ResponseWriter, r *http.Request) { 
    fmt.Println("Login prccessing") 
    email := r.FormValue("email") 
    password := r.FormValue("password") 
    fmt.Println(email + password) 
    var netTransport = &http.Transport{ 
     Dial: (&net.Dialer{ 
      Timeout: 50 * time.Second, 
     }).Dial, 
     TLSHandshakeTimeout: 50 * time.Second, 
    } 
    var netClient = &http.Client{ 
     Timeout: time.Second * 50, 
     Transport: netTransport, 
    } 
    res, err := netClient.Get("https://account.sloppy.zone/accounts/" + email) 
    if err != nil { 
     fmt.Println(err.Error()) 
     http.Redirect(w, r, "/", http.StatusSeeOther) 
    } 

    responeData, errs := ioutil.ReadAll(res.Body) 
    fmt.Println(string(responeData)) 
    if errs != nil { 
     log.Fatal(errs) 
    } 
    var info LoginInfo 
    json.Unmarshal(responeData, &info) 
    if email == info.Id && password == info.Password { 
     http.Redirect(w, r, "/manager", http.StatusSeeOther) 
    } else { 
     http.Redirect(w, r, "/", http.StatusSeeOther) 
    } 
} 

私はドッキングウィンドウでコンテナにサービスを実行して、ドッキングウィンドウコンテナのホストにデプロイしようとしています( sloppy.io)とこのサービスは別のサービス(アカウントサービス)を呼び出してそのサービスからアカウントとパスワードを取得し、同じホストのユーザー入力でそれらを確認します。問題は私のページにログインしてから502 Bad Gateway show up.Trackログにはエラーが表示されます:TLSハンドシェイクタイムアウト。

どうすればこの問題を解決できますか?

+0

コンテナ内で 'account.sloppy.zone'をカールすることはできますか?コンテナ内のサイトへのアクセス権があるかどうかを確認しますか? –

答えて

0

はどちらもsloppy.ioで実行されていますか?

1

golangアプリケーションはアカウントサービスに依存するため、セットアップでこの依存関係を定義し、ドッカーのネットワーク機能を使用して両方のサービスを接続する必要があります。そうすることで、docker swarmやsloppy.ioのようなスケーラブルな別のクラスタインフラストラクチャ内で任意の数のインスタンスを実行することもできます。

これには、バックエンド(アカウントサービス)を公開する必要がないという利点もあります。

docker-composeまたはsloppy.ioのコマンドラインインターフェイスを使用して、アプリケーションをビルドして実行することができます。厄介な設定ファイルは、docker-compose.ymlファイルに非常に似ています。ここでsloppy.yml

version: "v1" 
project: "myproject" 
services: 
    frontend: 
    golang_service: 
     dependencies: 
     - "../backend/account_service" 
     domain: "//my_golang_service.sloppy.zone" 
     env: 
     - ACCOUNT_HOST: "account_service.backend.myproject" 
     image: "dockerhub_username/golang_service:1.0.0" 
     port: 80 
    backend: 
    account_service: 
     image: "dockerhub_username/account_service:1.0.0" 

これは単に基本的な構成をカバーとして構成例があるhttp://kb.sloppy.io/features/connecting-containers

参照してください。おそらく、ボリュームと環境変数を追加する必要があります。すでにdocker-compose.ymlがある場合は、sloppose(github.com/sloppyio/sloppose)を使ってsloppy.ymlに変換することができます。