从docker container

时间:2017-08-30 19:28:58

标签: c# docker asp.net-web-api asp.net-core-2.0

我开始开发容器化应用程序和ASP.Net Core 2.0。这两个方面对我来说都是一个新手,我只是想设置一个简单的概念证明应用程序并不是我希望的那样。

目前,我有两个在Docker容器中运行的独立WebApi服务(在Windows 10上运行的Linux容器)。 首先,我只是使用:

创建它们

dotnet new webapi

然后我为每个Dockerfile添加了一个如下所示的内容:

FROM microsoft/aspnetcore-build:2.0
COPY . /app
WORKDIR /app
RUN ["dotnet", "restore"]
RUN ["dotnet", "build"]
EXPOSE 80/tcp
ENTRYPOINT ["dotnet", "run"]

我还创建了一个docker-compose.yml,如下所示:

version: "3"
    services:
        service1:
            build: ./service1
            ports:
                - "8000:80"
        service2:
            build: ./service2
            ports:
                - "8001:80"

使用docker-compose builddocker-compose up我可以开始跑步。从主机访问服务没有任何缺陷。

然而,这种概念验证应用的目标是连接这些服务。基本上service1正在访问service2以获取其他数据。

我向service1添加了一种尝试从service2访问数据的方法:

using (var client = new HttpClient())
{
    try
    {
        client.BaseAddress = new Uri("http://service2");
        var response = await client.GetAsync("/api/values/5");
        response.EnsureSuccessStatusCode(); // Throw in not success

        var stringResponse = await response.Content.ReadAsStringAsync();
        return stringResponse;
    }
    catch (HttpRequestException e)
    {
        return $"error: '{e.Message}'";
    }
}

此操作失败,并显示以下消息:

  

错误:'响应状态代码未指示成功:503(服务不可用)。'

我确认可以在service2内解析service1名称。 Pinging service1也很成功。

添加

depends_on:
    - "service2"

Docker-compose.yml似乎没有任何区别。

我是否缺少一些额外的配置才能从docker容器中访问其他服务?

感谢任何帮助或暗示。

谢谢, 约尔格

0 个答案:

没有答案