Doker映像不在同一端口上启动

时间:2020-09-20 13:17:38

标签: c# docker docker-compose

我的解决方案中有2个Web APi项目,我试图在docker contains上启动它们,但是由于某种原因,catalog.api映像无法在端口8000上启动,因此在第一次运行时就能够启动端口8000,但是在端口8001上添加basket.api之后,目录api给我一个错误。我所有其他泊坞窗都可以再次在同一端口上重新启动,只有catalog.api容器没有在端口8000上重新启动。

错误:针对catalog.api无法启动服务catalog.api:端口为 不可用:监听tcp 0.0.0.0:8000:绑定:试图 以其访问权限禁止的方式访问套接字。

我看不到任何地方使用端口8000,但是api仍无法在该端口上启动,我可以在8000以外的其他端口上启动api,但是我需要了解为什么它不能在8000上启动本身。

C:\WINDOWS\system32>netstat -an|find /i "8000"
  TCP    0.0.0.0:8000           0.0.0.0:0              LISTENING
  TCP    [::]:8000              [::]:0                 LISTENING

下面是我的docker-compose.override.yml

version: '3.4'

services:
catalogdb:
    container_name: catalogdb
    restart: always
    volumes:
        - ${WEBAPP_STORAGE_HOME}/site:/data/db
    ports:
        - "27017:27017"

basketdb:
    container_name: basketdb
    restart: always
    ports:
        - "6379:6379"

catalog.api:
    environment:
        - ASPNETCORE_ENVIRONMENT=Development
        - "CatalogDatabaseSettings:ConnectionString=mongodb://catalogdb:27017"
    depends_on:
        - catalogdb
    volumes:
        - ${HOME}/.microsoft/usersecrets/:/root/.microsoft/usersecrets
        - ${HOME}/.aspnet/https:/root/.aspnet/https/
    ports:
        - "8000:80"

basket.api:
    environment:
        - ASPNETCORE_ENVIRONMENT=Development
        - "ConnectionStrings:Redis=basketdb:6379"
    depends_on:
        - basketdb
    volumes:
        - ${HOME}/.microsoft/usersecrets/:/root/.microsoft/usersecrets
        - ${HOME}/.aspnet/https:/root/.aspnet/https/
    ports:
        - "8001:80"

1 个答案:

答案 0 :(得分:0)

正如我从您的docker-compose文件中读取的那样,您正在尝试在同一端口80上映射catalog.api和basket.api服务。这是冲突。我认为,您应该将catalog.api 8000映射到8000,并将basket.api 8001映射到8001,这样您的端点就不会在主机(即我在此处假定的本地主机)上发生冲突。

如果这样做,则应该可以访问localhost:8000处的catalog.api和localhost:8001处的basket.api

因此,基本上,两个服务都不能在同一端口上访问。