Skip to main content
 首页 » 编程设计

docker之docker-compose 的端口号未更改

2024年02月20日27zdz8207

我已经在 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/,如果我使用端口 3000 进行访问,则无法正常工作。

我的上述配置是否缺少任何内容?操作系统:windows server 2016,使用带有 hyper-vdocker-compose up -d 的 Windows 容器来启动并运行容器...

docker-compose Inspect 给出了以下输出

 "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] 之间的端口映射存在差异,在这种情况下,端口配置将为 ignored by design 您可以使用 --service-ports 标志或使用 -p 标志手动公开它们