我在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-v
和docker-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在主机上访问它。
答案 0 :(得分:0)
也许您正在使用docker-compose run
启动容器? docker-compose run
和docker-compose up [-d] [service]
之间的端口映射存在差异。在这种情况下,端口配置将为ignored by design
您可以使用--service-ports
标记或使用-p
标记