从docker容器访问asp.net核心服务

我正在开发容器化应用程序和ASP.Net Core 2.0。 这两个方面对我来说都是相当新的,我只是试图build立一个简单的概念certificate应用程序并不是我所希望的。

目前,我有两个独立的WebApi服务运行在Docker容器(在Windows 10上运行的Linux容器)。 首先,我使用以下方法创build它们:

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"] 

我也创build了一个如下所示docker-compose.yml

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

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

然而,这个概念certificate应用的目标是连接这些服务。 基本上, 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解决。 Ping服务1也是成功的。

添加

 depends_on: - "service2" 

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

我错过了一些额外的configuration,以便能够从docker集装箱内访问其他服务?

任何帮助或暗示赞赏。

谢谢,约尔格