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

Blazor Server搭配Docker与MariaDB无法访问问题求助

问题描述

我部署了两个互联的Docker容器:一个是配置正确且正常运行(包含数据)的MariaDB容器;另一个是C# .NET 6 Blazor Server应用容器。数据库连接与Blazor配置均无错误,但浏览器加载应用时仅返回错误:

ERR_EMPTY_RESPONSE

无法通过localhost:8080或0.0.0.0:8080访问应用。以下是相关配置文件及应用日志:

docker-compose.yml配置

version: "3.4"

volumes:
  datafiles:


services:
  db:
    image: mariadb
    volumes:
      - ./dumps:/docker-entrypoint-initdb.d
    restart: always
    environment:
      MARIADB_DATABASE: eventtimeline
      MARIADB_ROOT_PASSWORD: password
      MARIADB_USER: gebruiker
      MARIADB_PASSWORD: password
  mvc:
    build:
      context: .
      dockerfile: Dockerfile
    depends_on:
      - db
    ports:
      - "8080:80"
    volumes:
      - /EventTimeline/wwwroot:/src/EventTimeline/wwwroot
      - /EventTimeline/root/.nuget/packages/plotly.blazor/2.18.2/staticwebassets/:/root/.nuget/packages/plotly.blazor/2.18.2/staticwebassets/
      - /EventTimeline/root/.nuget/packages/mudblazor/6.11.1/staticwebassets/:/root/.nuget/packages/mudblazor/6.11.1/staticwebassets/
      - /src/obj/Release/net6.0/scopedcss/bundle/:/src/obj/Release/net6.0/scopedcss/bundle/
      - /src/EventTimeline/obj/Release/net6.0/scopedcss/bundle/:/src/EventTimeline/obj/Release/net6.0/scopedcss/bundle/
    restart: always
    environment:
      - DBHOST=db
      - DBPASSWORD=password
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=http://*:8080

Dockerfile配置及应用日志

# Stage for restoring dependencies
FROM debian:buster-slim AS debian
RUN apt-get update \
    && apt-get install -y \
    && rm -rf /var/lib/apt/lists/*

# Base Stage
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

# Copy project files and restore dependencies
FROM base AS restore
WORKDIR /src
COPY ["EventTimeline/EventTimeline.csproj", "EventTimeline/"]
RUN dotnet restore "EventTimeline/EventTimeline.csproj"

# Build Stage
FROM restore AS build
WORKDIR /src
COPY . .
RUN dotnet build "EventTimeline/EventTimeline.csproj" -c Release -o /app/build

# Publish Stage
FROM build AS publish
WORKDIR /src
RUN dotnet publish "EventTimeline/EventTimeline.csproj" -c Release -o /app/publish

# Final Stage
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "EventTimeline.dll"]
Output:
2024-01-17 13:22:05 Blazor added
2024-01-17 13:22:05 Added static files
2024-01-17 13:22:05 warn: Microsoft.AspNetCore.DataProtection.Repositories.FileSystemXmlRepository[60]
2024-01-17 13:22:05       Storing keys in a directory '/root/.aspnet/DataProtection-Keys' that may not be persisted outside of the container. Protected data will be unavailable when container is destroyed.
2024-01-17 13:22:05 warn: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[35]
2024-01-17 13:22:05       No XML encryptor configured. Key {24098cd6-0d0d-4554-a0a6-c169c9e4aeda} may be persisted to storage in unencrypted form.
2024-01-17 13:22:05 info: Microsoft.Hosting.Lifetime[14]
2024-01-17 13:22:05       Now listening on: http://[::]:8080
2024-01-17 13:22:05 info: Microsoft.Hosting.Lifetime[0]
2024-01-17 13:22:05       Application started. Press Ctrl+C to shut down.
2024-01-17 13:22:05 info: Microsoft.Hosting.Lifetime[0]
2024-01-17 13:22:05       Hosting environment: Development
2024-01-17 13:22:05 info: Microsoft.Hosting.Lifetime[0]
2024-01-17 13:22:05       Content root path: /app/
解决方案
  • 修复端口映射不匹配问题
    日志显示应用容器内部监听的是8080端口,但docker-compose中端口映射为8080:80,将主机8080端口映射到容器80端口,导致端口不匹配。两种修复方式:

    1. 修改docker-compose的ports配置为"8080:8080"
    2. 将环境变量ASPNETCORE_URLS改为http://*:80,与容器暴露的80端口保持一致
  • 验证卷挂载的正确性
    当前配置的卷挂载路径(如/EventTimeline/wwwroot)若在主机上不存在,可能导致应用无法读取静态资源甚至启动异常。建议先移除这些挂载配置,测试应用是否能正常访问,确认无问题后再按需配置正确的卷映射路径。

  • 检查容器内部端口监听状态
    进入应用容器内部,测试端口是否正常监听:

    docker exec -it <你的mvc容器名称> curl http://localhost:8080
    

    如果内部能访问,说明问题出在端口映射;如果内部也无法访问,需排查应用是否有未显示的启动错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 05:14:53