docker api 和网络应用程序容器的问题

Problems with docker api and web app containers

我正在创建一个具有 asp.net 核心的解决方案,其中包含一个网络应用程序和一个 api。两个项目都配置为 运行 在 docker 容器中。第三个容器是数据库容器。我正在使用 MySQL。 我创建了 docker-compose ps,显然一切看起来都很好,但我无法在浏览器中访问 API。浏览器只能访问 Web 应用程序。

我的连接字符串

Meu Dockerfile API

FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
LABEL version="1.0.0" description="API Produto"
COPY dist /app
WORKDIR /app
EXPOSE 80/tcp
EXPOSE 445
ENTRYPOINT ["dotnet", "APIProduto.dll", "--environment=Development"]

Meu Dockerfile WebApp

FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
LABEL version="1.0.0" description="Web App Produto"
COPY dist /app
WORKDIR /app
EXPOSE 80/tcp
EXPOSE 444
ENTRYPOINT ["dotnet", "WebAppProduto.dll", "--environment=Development"]

Meu docker-撰写

version: "3"

volumes:
    produtosdata:
    
networks:
    frontend:
    backend:
    dbhost:
    
services:
        mysql:
            image: "mysql:5.7"
            volumes:
             - produtosdata:/var/lib/mysql
             - ./MySql_Init:/docker-entrypoint-initdb.d
            networks:
             - dbhost
            environment:
             - MYSQL_ROOT_PASSWORD=senhaprodutos1257
             - bind-address=0.0.0.0
             
        apiproduto:
            build:
                context: ./APIProduto
                dockerfile: Dockerfile
            networks:
                - dbhost
                - backend
            ports:
                - 5002:80
            environment:
                - DBHOST=mysql
            depends_on:
                - mysql
                
        webappproduto:
            build:
                context: ./WebAppProduto
                dockerfile: Dockerfile
            networks:
                - backend
                - frontend
            ports:
                - 5001:80
            environment:
                - HOST=apiproduto
            depends_on:
                - apiproduto

谁能帮我找出问题所在?

让我告诉你如何找到解决方案。

  1. 首先,您收到 404 错误,因此您正在访问容器,但默认端点不在 localhost:5002。

  2. 例如,如果您正在访问您的 api,例如 http://localhost:5002/api/values 或 http://localhost:5002/天气预报所以试试看。