Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker compose运行2个容器,但只有一个服务在工作?_Docker_Asp.net Core_Docker Compose_Dockerfile - Fatal编程技术网

Docker compose运行2个容器,但只有一个服务在工作?

Docker compose运行2个容器,但只有一个服务在工作?,docker,asp.net-core,docker-compose,dockerfile,Docker,Asp.net Core,Docker Compose,Dockerfile,首先,最后一件事: 我想运行2个Asp.net核心应用程序,并能够调用每个应用程序(通过不同的端口) 我已经设法做到了一部分,但似乎一次只有一个处于活动状态 这是webapplication3的dockerfile(在webapplication3文件夹中) 这是webapplication1的dockerfile(在webapplication1文件夹中) Docker compose.yml文件: 太好了,让我们建立和建立: 正如您所看到的,这两个选项都处于启用状态: 让我们看一下doc

首先,最后一件事:

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

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


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

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

Docker compose.yml
文件:

太好了,让我们建立和建立:

正如您所看到的,这两个选项都处于启用状态:

让我们看一下docker ps:

现在,让我们尝试调用:

正如你们所看到的,两者都在起作用,但我应该得到不同的结果

()

我期待着

http://localhost:3333/api/values
将显示
我是webapplication 1的响应

http://localhost:5555/api/values
将显示
我是来自webapplication 3的响应

配置YML文件时

问题:


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

很难给出明确的答案,因为问题可能超出了您的问题提供的信息范围。但我可以试着给你一些解决问题的技巧:

  • 使用
    docker compose up-d
    启动您的服务(您可能已经这样做了)
  • 使用docker compose ps检查状态和端口转发
  • 进行api检查
  • 使用docker Stop webapplication1停止一项服务
  • 重复2三,
  • 您仍然可以访问这两个端口吗

    正如你所看到的,两者都在工作,但都去同一个服务

    你100%确定这是真的吗?

    怎么回事

    我已经找出了我的问题所在。
    我将解释我是如何得到这个答案的

    起初我对自己说:“忘记yml”,让我们手动运行它

    转到webapplication 1文件夹-->
    docker run-p5555:80-d3f10b9720b26

    转到webapplication 3文件夹-->
    docker run-p3333:80-d3f10b9720b26

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

    所以这与yml无关

    然后我想,“我一次又一次地覆盖同一个图像,如果我给每个图像添加不同的标签会怎么样?”

    并添加标签: (这基本上创建了两个不同的图像)

    现在

    解决了


    不要在同一图像上反复运行
    。使用标签。

    我看到它们都带有ps…-但无论我在浏览器中运行哪个端口,我都会看到相同的响应ebtw,而不使用-d。Docker只在你停止一项服务后才开始写作?(-d只返回命令提示符,-d:detach),现在我得到了这个Hi。你看到我的答案了吗?对不起,如果我问了一个愚蠢的问题,那么你说的“他们去同一个服务”是什么意思。两个端口都提供来自一个服务的答案。我还希望当localhost:5555时,webapplication 3会有
    响应
    
    http://localhost:3333/api/values         // for webapplication3
    http://localhost:5555/api/values         // for webapplication1
    
    FROM microsoft/dotnet:latest
    WORKDIR /app
    ADD ./bin/Debug/netcoreapp2.1 /app
    EXPOSE 80
    CMD  ["dotnet", "WebApplication3.dll"]
    
    FROM microsoft/dotnet:latest
    WORKDIR /app
    ADD ./bin/Debug/netcoreapp2.1 /app
    EXPOSE 80
    CMD  ["dotnet", "WebApplication1.dll"]
    
    version: '3.4'
    
    services:
    
      webapplication3:
        image: microsoft/dotnet:latest
        build: ./WebApplication3
        ports:
          - "3333:80"
    
    
    
      webapplication1:
        image: microsoft/dotnet:latest
        build: ./WebApplication1
        ports:
          - "5555:80"
    
    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"