azure - 容器在本地运行但在 ACI 中失败

标签 azure docker azure-container-instances

我创建了一个由 dotnet new web 生成的示例 asp.net core 应用程序。添加了暴露端口 5000 的 docker 文件。

Docker 文件如下

FROM mcr.microsoft.com/dotnet/aspnet:5.0-focal AS base
WORKDIR /app
EXPOSE 5000

ENV ASPNETCORE_URLS=http://+:5000

# Creates a non-root user with an explicit UID and adds permission to access the /app folder
# For more info, please refer to https://aka.ms/vscode-docker-dotnet-configure-containers
RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /app
USER appuser

FROM mcr.microsoft.com/dotnet/sdk:5.0-focal AS build
WORKDIR /src
COPY ["Sampleapp.csproj", "./"]
RUN dotnet restore "Sampleapp.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "Sampleapp.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "Sampleapp.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Sampleapp.dll"]

当我在桌面上本地运行它时,效果很好。但是,当我将其添加到 ACR 并在 ACI 中运行它时,它失败了。

az container create --resource-group $res_grp `
                    --name $aci_container_name `
                    --image $image_name `
                    --registry-login-server $registry_login_server `
                    --registry-username $akv_pull_usernamevalue `
                    --registry-password $akv_pullpasswordvalue `
                    --dns-name-label $dns_name_label `
                    --output table

Name              ResourceGroup       Status    Image                                                 IP:ports          Network    CPU/Memory       OsType    Location
----------------  ------------------  --------  ----------------------------------------------------  ----------------  ---------  ---------------  --------  -------------
aci0734container  containerbasics_rg  Running   devcontainerregistry0734.azurecr.io/helloacrworld:v1  20.53.163.177:80  Public     1.0 core/1.5 gb  Linux     australiaeast

也没有错误日志。

az container logs --resource-group containerbasics_rg --name aci0734container

info: Microsoft.Hosting.Lifetime[0]
      Now listening on: http://[::]:5000
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
      Content root path: /app

当我尝试 curl 时,这是响应

curl http://20.53.163.177:5000
curl : Unable to connect to the remote server
At line:1 char:1
+ curl http://20.53.163.177:5000
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

当我在本地运行它时,我映射目标端口,但 ACI 不允许端口映射。是这个问题吗?

最佳答案

您需要通过添加 --ports 5000 来公开非标准端口。 ACI 默认使用端口 80,您的实例正在监听并公开端口 5000:

az container create --resource-group $res_grp `
                --name $aci_container_name `
                --image $image_name `
                --registry-login-server $registry_login_server `
                --registry-username $akv_pull_usernamevalue `
                --registry-password $akv_pullpasswordvalue `
                --dns-name-label $dns_name_label `
                --ports 5000 `
                --output table

关于azure - 容器在本地运行但在 ACI 中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68220207/

相关文章:

azure - 为 Visual Studio Team Services 和 MTM 配置测试 Controller

python - 如何在 python 中将宇宙数据的时间戳转换为日期时间格式?

linux - 如何正确更改 Microsoft Azure 中的 SSH 端口?

mysql - Sequel Pro 使用 Docker Mysql 容器出现 'Connection failed!' 错误

docker - docker 1.6.0后宿主机容器的rootfs在哪里

azure - 无法将 docker-compose 基础架构部署到 Azure 容器实例

azure - 将私有(private)静态 IP 地址附加到 Azure 容器实例

azure - 在 Azure SQL 中创建具有不同名称的外部表

docker - docker-compose错误:无法找到指定的Dockerfile

azure - Azure 上正确的容器技术可实现长期运行的服务