You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows Server 2016下ASP.NET Core Docker端口暴露问题排查

ASP.NET Core Docker Compose Port Mapping Not Working on Windows Server 2016 Datacenter

Let's break down why your port 5432 mapping isn't taking effect, and walk through how to fix it:

1. Docker Compose Override Files Replace (Don’t Merge) List Fields

This is the most likely root cause: Docker Compose treats list-type fields like ports as replaceable, not additive, when merging docker-compose.yml with docker-compose.override.yml.

If your docker-compose.override.yml already has a ports section for the project service, the entire ports list from your main docker-compose.yml gets discarded—meaning your 5432:5432 mapping never makes it into the final runtime configuration.

To confirm this, run this command in your project directory to view the fully merged Compose config:

docker-compose config

Check the ports entry under the project service. If 5432:5432 isn’t listed there, this is exactly the issue.

2. Your ASP.NET Core App Might Not Be Listening on Port 5432

Even if the port mapping is set up correctly, nothing will connect if your app isn’t actually listening on port 5432 inside the container. ASP.NET Core defaults to listening on ports 80 (or 5000 for older versions), not 5432.

Fix this by ensuring your Dockerfile and app config tell the app to use 5432:

  • Add these lines to your Dockerfile to set the right environment variable and expose the port:
    EXPOSE 5432
    ENV ASPNETCORE_URLS=http://+:5432
    
  • Alternatively, specify the URL directly in your Dockerfile’s ENTRYPOINT:
    ENTRYPOINT ["dotnet", "Janssen1877.WarehouseAPI.dll", "--urls", "http://+:5432"]
    

3. Windows Server 2016-Specific Checks

Windows Server 2016 has a few unique quirks to verify:

  • Port conflicts: Port 5432 is the default for PostgreSQL. If you have PostgreSQL running directly on your Windows Server host, it’s already using that port—Docker can’t map it. Use netstat -ano | findstr :5432 to check if the port is in use.
  • Firewall rules: Windows Server’s built-in firewall might block incoming traffic on port 5432. Create an inbound rule to allow TCP traffic on 5432 for your Docker host.
  • Docker network mode: On Windows Server 2016, Docker uses NAT networking by default. Make sure you’re accessing the container via the host’s IP address (not localhost if connecting from another machine) and that the port mapping is bound to 0.0.0.0 (the default for Compose ports).

4. Update the Override File

To get your 5432 mapping working, add it directly to the ports list in docker-compose.override.yml (since this file takes precedence over the main config). Here’s an example:

version: '3'
services:
  project:
    ports:
      - 5432:5432  # Add your port mapping here
      - 8080:80     # Keep any existing ports you need
    # Other existing config for the service...

After making these changes, restart your Compose stack with docker-compose down && docker-compose up -d and test the port mapping again.

内容的提问来源于stack exchange,提问作者S B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:19:57