docker-compose的端口号不会改变

时间:2016-12-14 10:41:34

标签: docker docker-compose portforwarding

我在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在主机上访问它。

1 个答案:

答案 0 :(得分:0)

也许您正在使用docker-compose run启动容器? docker-compose rundocker-compose up [-d] [service]之间的端口映射存在差异。在这种情况下,端口配置将为ignored by design 您可以使用--service-ports标记或使用-p标记

手动公开它们