【发布时间】:2022-01-20 10:46:38
【问题描述】:
我必须从 Vue 前端解决方案向 .NET Core (3.1) 后端 API 发出请求。正常运行它(没有 Docker),没有任何问题,但我必须(单独)将它们 dockerize 并使它们工作,这是我做不到的。
Vue Dockerfile:
# base image
FROM node:12.2.0-alpine
# set working directory
WORKDIR /app
# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH
# install and cache app dependencies
COPY package.json /app/package.json
RUN npm install
# start app
CMD ["npm", "run", "serve"]
Vue Docker 运行命令:
docker run -v ${PWD}:/app -v /app/node_modules -p 8081:8080 --rm dockerized-vue:front
.NET Dockerfile:
# syntax=docker/dockerfile:1
FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build-env
WORKDIR /app
# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore
# Copy rest of the files
COPY . .
# Build
RUN dotnet publish -c Release -o out
# Build runtime image
FROM mcr.microsoft.com/dotnet/aspnet:3.1
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "MyApp.dll"]
.NET Docker 运行命令:
docker run -p 8082:8080 --rm dockerized-netcore:back
.NET Core 启动设置.json:
{
"$schema": "http://json.schemastore.org/launchsettings.json",
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:58726",
"sslPort": 0
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "myapp",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"MyApp": {
"commandName": "Project",
"launchUrl": "myapp",
"applicationUrl": "http://localhost:8082",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
我将请求从 Vue 发送到
http://localhost:8082/api/MyEndpoint
还必须补充一点,我最初使用端口 5000 进行本地测试(没有 docker)但我决定更改为端口 8082,因为 Docker 告诉我端口 5000 已经在使用中(不知道为什么...)
谢谢。
【问题讨论】:
-
您是通过 vue 应用从 vue 应用的容器还是从浏览器发送指定的请求?
-
另外,你为什么在你的 web api 中转发到 8080 而不是端口 80?
-
@4ng3L 您可能引用了容器的
localhost而不是主机localhost,请尝试使用您指定的主机 IP 地址和端口 8082 从 Vue 应用程序连接.NET 后端