docker编号不会更改为docker组成

我已经在docker-compose中指定了端口映射,但是它仍然不能正常工作,我仍然需要使用未指定的端口访问站点

下面是我docker-compose.yml

 version: '2' networks: default: external: name: nat services: website: build: context: '.' dockerfile: "./iis.dockerfile" ports: - 3000:8081 

和相应的dockerfile

 FROM microsoft/iis RUN ["powershell.exe", "Install-WindowsFeature NET-Framework-45-ASPNET"] RUN ["powershell.exe", "Install-WindowsFeature Web-Asp-Net45"] ADD www/ c:\\webapp EXPOSE 8081 RUN powershell New-Website -Name 'web-app' -Port 8081 -PhysicalPath 'c:\webapp' -ApplicationPool '.NET v4.5' 

我必须使用访问应用程序: http://192.168.105.33:8081/ : http://192.168.105.33:8081/ : http://192.168.105.33:8081/ ,如果我使用端口3000它不起作用。

在上面的configuration中是否有什么缺失? 操作系统: windows server 2016 ,与hyper-vdocker-compose up -d使用Windows容器docker-compose up -d获取容器和运行…

docker工人检查给我下面的输出

  "Ports": { "8081/tcp": [ { "HostIp": "0.0.0.0", "HostPort": "3000" } ] }, 

docker ps给我下面的输出

  eb7aa1e74b7f website_website "C:\\ServiceMonitor..." 14 minutes ago Up 14 minutes 0.0.0.0:3000-> 

8081 / tcp website_website_1

dokcer-compose ps给我以下输出

  Name Command State Ports -------------------------------------------------------------------------------- website_website_1 C:\ServiceMonitor.exe w3svc Up 0.0.0.0:3000->8081/tcp 

所以我应该可以使用端口3000在主机上访问它。

也许你用docker-compose run启动你的容器? docker-compose rundocker-compose up [-d] [service] port之间的端口映射是有区别的。 docker-compose up [-d] [service]在这种情况下,端口configuration将被devise忽略。您可以使用--service-ports标志或手动暴露它们-p