[英]Deploying a multi-container docker application to Azure Container Service
[英]Multi-Container Docker Application - Internal Rest API Communication
I've created a multi-container docker application, that is hosted on an azure Linux app service for containers using docker compose, across images pulled from an azure container registry.
我的应用程序包含一个 web 应用程序前端以及目前 3 个 API 项目。 我已经部署了所有这些应用程序,但在让 web 应用程序与 API 通信时遇到问题。 由于我最近才部署了 web 应用程序和其他应用程序,因此我一直在使用我的 localhost 端点进行 API 调用。 这可以很好地使用我的前端测试 API 的功能,但是当我现在正在部署我的项目时,我需要与容器内的服务进行通信,但是我尝试的一切似乎都没有按预期工作,导致在 500 内部服务器错误中。
我的 docker-compose 文件如下:
version: "3.7"
services:
webapp:
image: {MyApp}.azurecr.io/{ProjectName}:dev
ports:
- "80:80"
networks:
{ProjectName}-net:
ipv4_address: 172.28.1.1
depends_on:
- {App1}.api
- {App2}.api
- {App3}.api
{App1}.api:
image: {MyApp}.azurecr.io/{App1}api:dev
container_name: {App1}
ports:
- "2000:2000"
networks:
{ProjectName}-net:
ipv4_address: 172.28.1.2
depends_on:
- xamlbuilder.api
{App2}.api:
image: {MyApp}.azurecr.io/{App2}:dev
container_name: {App2}
ports:
- "3000:3000"
networks:
{ProjectName}-net:
ipv4_address: 172.28.1.3
{App3}.api:
image: {MyApp}.azurecr.io/{App3}:dev
container_name: {App3}
ports:
- "4000:4000"
networks:
{ProjectName}-net:
ipv4_address: 172.28.1.4
networks:
{ProjectName}-net:
ipam:
driver: bridge
config:
- subnet: 172.28.0.0/16
DockerFile(网络应用程序):
FROM mcr.microsoft.com/dotnet/core/sdk:3.0 AS build
WORKDIR /source
COPY . .
RUN dotnet restore
RUN dotnet publish --output /app/ --configuration Release --no-restore
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0 AS runtime
WORKDIR /app
COPY --from=build /app .
ENTRYPOINT ["dotnet", "{ProjectName}.WebApp.dll"]
EXPOSE 80
Dockerfile {App1}
FROM mcr.microsoft.com/dotnet/core/sdk:3.0 AS build
WORKDIR /source
COPY . .
RUN dotnet restore
RUN dotnet publish --output /app/ --configuration Release --no-restore
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0 AS runtime
WORKDIR /app
COPY --from=build /app .
ENTRYPOINT ["dotnet", "{ProjectName}.{App1}.API.dll"]
EXPOSE 2000
(其他应用类似dockerfiles)
我最近的尝试是添加网络配置和 static IP 地址,因为我们无法让它工作。 我不知道这个问题是否与我的端点有关(我尝试用各种端点替换我的 localhost 端点 - URL/app1:portNumber/Methods、URL/app1/Methods、IPAddress:portNumber/Methods、IPAddress/Methods ETC)。
任何人都可以看到任何明显的东西吗? 我只是使用了错误的端点还是 compose/dockerfile/config 问题?
非常感谢您的指导!
正如我从您提供的 docker-compose 文件中看到的那样,您在其中设置了networks
属性。 但目前 Azure Web App for Container 不支持networks
属性。 使用它时可能会导致问题,但它会被 Azure Web App 忽略。 请参阅Docker Compose 选项以了解哪些支持,哪些不支持。
另外,Azure Web App 仅支持将 80 或 443 端口暴露给 Internet。 您不能将文件中的其他端口(例如 3000 和 2000)暴露给 Internet。
您可以查看Web App for Containers 中的 Create a multi-container (preview) app 示例。 我觉得对你很有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.