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
谁能帮我找出问题所在?
让我告诉你如何找到解决方案。
首先,您收到 404 错误,因此您正在访问容器,但默认端点不在 localhost:5002。
例如,如果您正在访问您的 api,例如 http://localhost:5002/api/values 或 http://localhost:5002/天气预报所以试试看。
我正在创建一个具有 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
谁能帮我找出问题所在?
让我告诉你如何找到解决方案。
首先,您收到 404 错误,因此您正在访问容器,但默认端点不在 localhost:5002。
例如,如果您正在访问您的 api,例如 http://localhost:5002/api/values 或 http://localhost:5002/天气预报所以试试看。