我必須從 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 launchSettings.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 已在使用中(不知道為什么...)
謝謝。
uj5u.com熱心網友回復:
在用作映像基礎的 aspnet 映像中,Microsoft 將 ASPNETCORE_URLS 環境變數設定為http:// :80覆寫啟動設定檔案。
這意味著您應該像這樣將主機上的埠映射到影像中的埠 80
docker run -p 8082:80 --rm dockerized-netcore:back
確定應用程式正在偵聽哪個埠的好方法(因為有很多方法可以設定它,所以很難確定哪個設定獲勝)是運行命令docker logs <container name>。然后你會看到這樣的東西
info: Microsoft.Hosting.Lifetime[0]
Now listening on: http://[::]:80
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
在這里您可以看到它正在偵聽哪個埠。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/383893.html
