英文:
GraphQL + BananaCakePop won't work in a Docker container
问题
我正在创建一个使用GraphQL ASP.NET API和Hot Chocolate / BananaCakePop进行基于Web的查询的概念验证。目前,这只是一个最基本的API,只有一个查询点。我在VS中本地运行应用程序没有问题,但是当我尝试将其Docker化时遇到了问题。虽然我可以使用Postman在5148端口查询API,但是当我尝试使用Web浏览器访问时,控制台会显示404错误。
我的Dockerfile如下所示:
#Pull a builder image
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build-env
WORKDIR /App
EXPOSE 7057
EXPOSE 5148
# Copy solution over (.dockerIgonore excludes bin, obj etc)
COPY . ./
# Restore nuget packages
RUN dotnet restore
# Build the solution
RUN dotnet build -c Release
# Build and publish the web api project
RUN dotnet publish -c Release -o ./out
# Build runtime image
FROM mcr.microsoft.com/dotnet/aspnet:6.0
WORKDIR /App
# Copy publish output to final container
COPY --from=build-env /App/out .
ENTRYPOINT ["dotnet", "My.Api.dll", "--urls=http://*:5148/;http://*:7057/"]
我的错误如下所示:
2023-08-09 10:19:47 2023-08-09 09:19:47.598 [INF] [AUTH] [] Now listening on: http://[::]:5148
2023-08-09 10:19:47 2023-08-09 09:19:47.610 [INF] [AUTH] [] Now listening on: http://[::]:7057
2023-08-09 10:19:47 2023-08-09 09:19:47.613 [INF] [AUTH] [] Application started. Press Ctrl+C to shut down.
2023-08-09 10:19:47 2023-08-09 09:19:47.613 [INF] [AUTH] [] Hosting environment: Production
2023-08-09 10:19:47 2023-08-09 09:19:47.613 [INF] [AUTH] [] Content root path: /App/
2023-08-09 10:20:39 2023-08-09 09:20:39.151 [INF] [AUTH] [] Request starting HTTP/1.1 GET http://localhost:5148/ - -
2023-08-09 10:20:39 2023-08-09 09:20:39.175 [INF] [AUTH] [] Request finished HTTP/1.1 GET http://localhost:5148/ - - - 404 0 - 26.1855ms
2023-08-09 10:20:47 2023-08-09 09:20:47.166 [INF] [AUTH] [] Request starting HTTP/1.1 POST http://localhost:5148/graphql application/json 107
2023-08-09 10:20:47 2023-08-09 09:20:47.169 [INF] [AUTH] [] Executing endpoint 'Hot Chocolate GraphQL Pipeline'
2023-08-09 10:20:47 2023-08-09 09:20:47.576 [INF] [AUTH] [] [SolrContentQuery] graphQL query
2023-08-09 10:20:48 2023-08-09 09:20:48.051 [INF] [AUTH] [] Executed endpoint 'Hot Chocolate GraphQL Pipeline'
2023-08-09 10:20:48 2023-08-09 09:20:48.053 [INF] [AUTH] [] Request finished HTTP/1.1 POST http://localhost:5148/graphql application/json 107 - 200 - application/graphql-response+json;+charset=utf-8 887.1841ms
有任何想法我做错了什么吗?
英文:
I'm creating a proof of concept with a GraphQL ASP.NET API and Hot Chocolate / BananaCakePop for web-based querying by local developers. It is just the most basic API at present with a single query point. I have the app running fine locally in VS but am having problems when I try to Dockerize it. While I can query the API using Postman on port 5148 when I try to access it using the web browser it gives me a 404 error in the console.
My dockerfile is as follows:
#Pull a builder image
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build-env
WORKDIR /App
EXPOSE 7057
EXPOSE 5148
# Copy solution over (.dockerIgonore excludes bin, obj etc)
COPY . ./
# Restore nuget packages
RUN dotnet restore
# Build the solution
RUN dotnet build -c Release
# Build and publish the web api project
RUN dotnet publish -c Release -o ./out
# Build runtime image
FROM mcr.microsoft.com/dotnet/aspnet:6.0
WORKDIR /App
# Copy publish output to final container
COPY --from=build-env /App/out .
ENTRYPOINT ["dotnet", "My.Api.dll", "--urls=http://*:5148/;http://*:7057/"]
My errors are as follows:
2023-08-09 10:19:47 2023-08-09 09:19:47.598 [INF] [AUTH] [] Now listening on: http://[::]:5148
2023-08-09 10:19:47 2023-08-09 09:19:47.610 [INF] [AUTH] [] Now listening on: http://[::]:7057
2023-08-09 10:19:47 2023-08-09 09:19:47.613 [INF] [AUTH] [] Application started. Press Ctrl+C to shut down.
2023-08-09 10:19:47 2023-08-09 09:19:47.613 [INF] [AUTH] [] Hosting environment: Production
2023-08-09 10:19:47 2023-08-09 09:19:47.613 [INF] [AUTH] [] Content root path: /App/
2023-08-09 10:20:39 2023-08-09 09:20:39.151 [INF] [AUTH] [] Request starting HTTP/1.1 GET http://localhost:5148/ - -
2023-08-09 10:20:39 2023-08-09 09:20:39.175 [INF] [AUTH] [] Request finished HTTP/1.1 GET http://localhost:5148/ - - - 404 0 - 26.1855ms
2023-08-09 10:20:47 2023-08-09 09:20:47.166 [INF] [AUTH] [] Request starting HTTP/1.1 POST http://localhost:5148/graphql application/json 107
2023-08-09 10:20:47 2023-08-09 09:20:47.169 [INF] [AUTH] [] Executing endpoint 'Hot Chocolate GraphQL Pipeline'
2023-08-09 10:20:47 2023-08-09 09:20:47.576 [INF] [AUTH] [] [SolrContentQuery] graphQL query
2023-08-09 10:20:48 2023-08-09 09:20:48.051 [INF] [AUTH] [] Executed endpoint 'Hot Chocolate GraphQL Pipeline'
2023-08-09 10:20:48 2023-08-09 09:20:48.053 [INF] [AUTH] [] Request finished HTTP/1.1 POST http://localhost:5148/graphql application/json 107 - 200 - application/graphql-response+json;+charset=utf-8 887.1841ms
Any ideas where I'm going wrong?
答案1
得分: 1
看起来你得到的404错误是因为你正在访问服务器的根目录(/
),而在Postman中你正在访问图形路由(/graphql
)。
默认情况下,图形不会为根URL添加任何映射,所以404错误是合理的。请再次尝试在URL中加上graphql,你应该会看到BCP弹出,就像你期望的那样。
英文:
It looks like the 404 you are getting is because you are navigating to the root of the server (/
), whereas on postman you are hitting the graph route (/graphql
).
By default graph doesn't add any mappings for the root url so it makes sense that would 404, try again with graphql in the URL and you should see BCP popping up as you would expect.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论