我有一个Azure管道。
在其中创建一个包含.netcore API的Docker容器。
我创建了一组邮递员测试,并且试图在docker中针对API运行这些测试。
我已将端口5050作为创建API的dockerfile的一部分公开。 我已将newman设置为使用localhost:5050。
运行newman脚本后,所有测试均失败,并且出现以下错误:
POST http://localhost:5050/api/myendpoint [errored]
connect ECONNREFUSED 127.0.0.1:5050
2⠄ JSONError in test-script
这是我的dockerfile:
FROM microsoft/dotnet:2.1-aspnetcore-runtime-nanoserver-1803 AS base
WORKDIR /app
EXPOSE 5050
ENV ASPNETCORE_URLS http://+:5050
FROM microsoft/dotnet:2.1-sdk-nanoserver-1803 AS build
WORKDIR /src
COPY ["my.data.api/my.data.api.csproj", "my.data.api/"]
RUN dotnet restore "my.data.api/my.data.api.csproj"
COPY . .
WORKDIR "/src/my.data.api"
RUN dotnet build "my.data.api.csproj" -c Release -o /app
FROM build AS publish
RUN dotnet publish "my.data.api.csproj" -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "my.data.api.dll"]
有人知道我需要做什么才能启用从构建代理(托管代理)到Docker容器中的API的访问吗?
其他信息:我在管道代码中构建API映像并运行它:
- task: Docker@1
displayName: 'Build API Image'
inputs:
command: build
dockerFile: 'my.data.api\Dockerfile'
useDefaultContext: false
buildContext: '.'
- task: Docker@1
displayName: 'Run API Image'
inputs:
command: run
ports: '5050:5050'
runInBackground: true
containerName: $(Build.Repository.Name)
此后,我运行测试。最初,我只在Dockerfile中使用EXPOSE 5050
,但是为了使它正常工作,我开始将其添加到任何地方...