Docker环境下API、SQL与RabbitMQ连接故障排查求助
Docker环境下多API、SQL与RabbitMQ通信异常
问题现象
- 主API通过RabbitMQ发送的消息可在控制台及RabbitMQ管理界面正常查看,但helper API无法接收消息
- Docker容器内的helper API异常要求连接SQL数据库,而本地环境运行该API时无需连接数据库
- 本地环境中所有组件(两个API、SQL、RabbitMQ)通信完全正常,推测问题出在Dockerfile或Docker Compose配置中
已尝试的排查操作
- 曾尝试在Dockerfile中添加第二个API的构建逻辑,结果两个API变成完全相同的副本,导致系统崩溃
- 多次执行容器重建、端口配置修改、localhost地址调整、数据库删除重建、helper API重新创建等操作,均未解决问题
相关配置文件
Dockerfile
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base WORKDIR /app EXPOSE 7166 ENV ASPNETCORE_URLS=http://+:7166 FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build WORKDIR /src COPY . . FROM build AS publish RUN dotnet publish "eCakeShop/eCakeShop.csproj" -c Release -o /app FROM base AS final WORKDIR /app COPY --from=publish /app . ENTRYPOINT ["dotnet", "eCakeShop.dll"]
Docker Compose 文件
version: "3" services: ecakeshop-sql: image: "mcr.microsoft.com/mssql/server:2022-latest" restart: unless-stopped environment: SA_PASSWORD: "***********" ACCEPT_EULA: "Y" MSSQL_PID: "Developer" ports: - "1434:1433" networks: - ecakeshopnet rabbitmq: image: "rabbitmq:latest" hostname: "rabbitmq" restart: unless-stopped ports: - "5672:5672" - "15672:15672" networks: - ecakeshopnet ecakeshop-api: restart: unless-stopped build: . environment: - "ConnectionStrings:eCakeShop=Server=ecakeshop-sql,1433;Database=eCakeShop;Encrypt=true;MultipleActiveResultSets=true;TrustServerCertificate=True;User=sa;Password=**********;" - "ASPNETCORE_ENVIRONMENT=Development" ports: - "7166:7166" networks: - ecakeshopnet depends_on: - ecakeshop-sql - rabbitmq links: - ecakeshop-sql helper-api: restart: unless-stopped build: . environment: - "ConnectionStrings:eCakeShop=Server=ecakeshop-sql,1433;Encrypt=true;MultipleActiveResultSets=true;TrustServerCertificate=True;User=sa;Password=***********;" - "ASPNETCORE_ENVIRONMENT=Development" ports: - "7215:7215" networks: - ecakeshopnet depends_on: - rabbitmq networks: ecakeshopnet: driver: bridge
内容的提问来源于stack exchange,提问作者Chubbyb0b
相关产品推荐
相关产品推荐

