获取net / http:在docker容器主机上运行golang app时的TLS握手超时

时间:2017-08-20 20:34:23

标签: ssl docker go

这是我的代码:

#ifndef MY_STRUCTS_HPP
#define MY_STRUCTS_HPP

#include <iostream>
#include <string>

typedef struct {
    std::string a;
    std::string b;
} Info;

std::ostream &operator<<(std::ostream &o, const Info &rhs);

#endif

我尝试使用docker运行服务容器并将其部署在docker容器主机(sloppy.io)上,此服务调用另一个服务(帐户服务)以从该服务获取帐户和密码并使用用户输入在同一主机上。问题是当我登录我的页面然后502 Bad Gateway显示。跟踪记录我看到错误:TLS握手超时。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

由于您的golang应用程序依赖于帐户服务,您应该在设置中定义此依赖项,并使用docker的网络功能来连接这两种服务。这样做还可以使您能够将任意数量的实例作为docker swarm运行,或者在另一个可扩展的集群基础结构(如sloppy.io)中运行。

这也有一个好处,就是您不需要向公众公开您的后端(帐户服务)。

您可以使用docker-compose或sloppy.io的命令行界面来构建和运行您的应用程序。 Sloppy配置文件与def foo(a): return {'first' : 'first' + a, 'second' : 'second' + a + 'bar'} class Thing(object): def __init__(self, a): self.__dict__.update(foo(a)) 文件非常相似。见http://kb.sloppy.io/features/connecting-containers

以下是In [1233]: f = Thing('test') In [1234]: f.first Out[1234]: 'firsttest' In [1235]: f.second Out[1235]: 'secondtestbar'

的配置示例
docker-compose.yml

这仅涵盖基本配置。您可能希望添加卷和环境变量。如果您已经有一个现有的docker-compose.yml,可以使用sloppose(github.com/sloppyio/sloppose)将其转换为sloppy.yml。

答案 1 :(得分:0)

这两项服务都是在sloppy.io上运行的吗?