Spring boot dockerized apps之间的通信

时间:2015-09-07 18:27:15

标签: java spring docker spring-boot

我新使用spring boot和docker,我遇到了运行docker容器的问题。 在调试模式下,应用程序启动没有问题,但是当我将它们作为容器运行时,出现了问题。 例如,我的服务器配置包含所有yml文件,也包括eureka属性。 配置服务器启动完美,但不是eureka服务器,它必须查找配置服务器的配置,因为这些:

int main()
{
    ifstream infile("C:\\Teste\\Teste.txt"); 
    ofstream output("C:\\Teste\\output.txt");

    string line;
    string columns[16];

    vector<Input_Spec> Input;
    Input_Spec oneInput;

    while (getline(infile, line))
    {
        split(line, ';', columns);

        if (!columns[0].empty())
        {
            oneInput.Data               = columns[0];
            oneInput.Ativo              = columns[1];
            oneInput.Buy_Sell           = stoi(columns[2]);
            oneInput.Sequencia          = stod(columns[3]);
            oneInput.Id                 = stod(columns[4]);
            oneInput.Event              = stoi(columns[5]);
            oneInput.Hr_Priority        = columns[6];
            oneInput.Priority           = stod(columns[7]);
            oneInput.Price              = stod(columns[8]);
            oneInput.Qtd_Total          = stod(columns[9]);
            oneInput.Qtd_Traded         = stod(columns[10]);
            oneInput.Data_Order         = columns[11];
            oneInput.Data_Time_Order    = columns[12];
            oneInput.State_Of_Order     = columns[13];
            oneInput.Condition_Of_Order = columns[14];
            oneInput.Broker             = stod(columns[15]);

            Input.push_back(oneInput);
        }
    }

    // ----------------------
    // Modify your data here.
    // ----------------------

    for(vector<Input_Spec>::const_iterator it = Input.begin(); it != Input.end(); it++)
    {
        output << it->Data               << '\t';
        output << it->Ativo              << '\t';
        output << it->Buy_Sell           << '\t';
        output << it->Sequencia          << '\t'; 
        output << it->Id                 << '\t';
        output << it->Event              << '\t';
        output << it->Hr_Priority        << '\t';
        output << it->Priority           << '\t';
        output << it->Price              << '\t';
        output << it->Qtd_Total          << '\t';
        output << it->Qtd_Traded         << '\t';
        output << it->Data_Order         << '\t';
        output << it->Data_Time_Order    << '\t';
        output << it->State_Of_Order     << '\t';
        output << it->Condition_Of_Order << '\t';
        output << it->Broker             << '\n';
    }

    output.close();
    infile.close();
    return 0;
}

在eureka的日志中,我发现:

  

找不到PropertySource:GET请求的I / O错误   &#34; http://127.0.0.1:8888/server-eureka/default&#34;:拒绝连接;   嵌套异常是java.net.ConnectException:连接被拒绝

所以我看到尤里卡可以uri: ${vcap.services.config-service.credentials.uri:http://127.0.0.1:8888} 未完成任务。 也许我想念Docker文件中的内容。

1 个答案:

答案 0 :(得分:2)

如果您不使用docker链接容器,则必须仅使用公共IP地址。 Docker将为每个正在运行的容器分配一个自己的IP地址,默认情况下无法访问。只有当您开始公开端口时,才会有一个iptables条目,它将主机公共IP地址和给定端口链接到内部使用的端口和(动态分配的)docker容器的IP地址。这也是为什么127.0.0.1不起作用的原因,因为它会查看容器的本地上下文,但tgere服务没有运行。