我的解决方案中有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"
答案 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
因此,基本上,两个服务都不能在同一端口上访问。