【问题标题】:Docker-compose runs 2 containers , but only one service is working?Docker-compose 运行 2 个容器,但只有一个服务在工作?
【发布时间】:2018-10-19 18:11:03
【问题描述】:

最后一件事:

我想运行 2 个 Asp.net 核心应用程序并能够调用每个应用程序(通过不同的端口)。

http://localhost:3333/api/values         // for webapplication3
http://localhost:5555/api/values         // for webapplication1

我已经部分做到了 - 但似乎一次只有 一个 处于活动状态。


这是webapplication3 的 dockerfile(在 webapplication3 文件夹中)

FROM microsoft/dotnet:latest
WORKDIR /app
ADD ./bin/Debug/netcoreapp2.1 /app
EXPOSE 80
CMD  ["dotnet", "WebApplication3.dll"]

这是webapplication1 的 dockerfile(在 webapplication1 文件夹中)

FROM microsoft/dotnet:latest
WORKDIR /app
ADD ./bin/Debug/netcoreapp2.1 /app
EXPOSE 80
CMD  ["dotnet", "WebApplication1.dll"]

Docker-compose.yml 文件:

version: '3.4'

services:

  webapplication3:
    image: microsoft/dotnet:latest
    build: ./WebApplication3
    ports:
      - "3333:80"



  webapplication1:
    image: microsoft/dotnet:latest
    build: ./WebApplication1
    ports:
      - "5555:80"

太好了,让我们建立起来吧:

如你所见,两者都开启:

让我们看看docker ps

现在让我们尝试调用:

如您所见,两者都在工作,但我应该得到不同的结果!

(I've modified the actions to return different results)

我期待

http://localhost:3333/api/values 将显示I'm response from webapplication 1

还有

http://localhost:5555/api/values 将显示I'm response from webapplication 3

随着 YML 文件的配置

问题:

如何让我在docker-compose 中声明的端口访问每个端点?

【问题讨论】:

  • 对不起,如果我问的是一个愚蠢的问题,但您所说的“他们使用相同的服务”是什么意思?
  • @scipsycho 我的意思是this。两个端口都为我提供了一项服务的答案。我也希望I"m response from webapplication 3" 当 localhost:5555

标签: docker asp.net-core docker-compose dockerfile


【解决方案1】:

什么鬼……

我已经弄清楚我的问题是什么。
我将解释我是如何得到这个答案的。

一开始我对自己说:“忘记 yml”,让我们手动运行吧。

转到 webapplication 1 文件夹 ----> docker run -p 5555:80 -d 3f10b9720b26

转到 webapplication 3 文件夹 ----> docker run -p 3333:80 -d 3f10b9720b26

我还是得到了同样的结果!

所以这与 yml 无关

然后我想,“我一次又一次地覆盖同一张图片,如果我对每一张都进行不同的标记呢?”

So i've modified the yml to actually work with the image 并添加标签: (基本上创建了两个不同的图像)

version: '3.4'

services:

  webapplication3:
    image: microsoft/dotnet:foo
    build: ./WebApplication3
    ports:
      - "3333:80"
    depends_on:
      - webapplication1


  webapplication1:
    image: microsoft/dotnet:bar
    build: ./WebApplication1
    ports:
      - "5555:80"

现在……..

解决了。

不要在同一张图片上反复run。使用标签。

【讨论】:

    【解决方案2】:

    很难给出明确的答案,因为问题很可能不在您的问题提供的信息范围内。但我可以尝试给你一些故障排除技巧:

    1. 使用docker-compose up -d 开始您的服务(您可能已经这样做了)
    2. 使用docker-compose ps检查状态和端口转发
    3. 做你的 api 检查
    4. 使用docker stop webapplication1 停止一项服务
    5. 重复 2. & 3.

    你还能访问这两个端口吗?

    如您所见,两者都在工作,但都使用相同的服务!

    100% 确定这是真的吗?

    【讨论】:

    猜你喜欢
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-15
    • 2022-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多