ASP.Net Core Angular應用使用Docker進行容器化部署(2)-- 在鏡像中安裝nodejs
一、介紹
本文介紹ASP.Net Core Angular應用使用Docker進行容器化部署的第二種方法,主要是通過在dotnet sdk鏡像中安裝nodejs
二、環境
- Visual Studio 2019
- Angular cli 9.1.3
- Nodejs 14.0.0
- Docker
三、部署
1、添加Docker支持
在項目上右鍵,選擇【添加】–【Docker支持…】
在彈出的Docker文件選項選擇框中選擇【Linux】選項,然後點擊【確定】即可
2、生成鏡像
可根據自己的項目調整一下Dockerfile
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY . .
RUN dotnet build "AngularDemo03.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "AngularDemo03.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "AngularDemo03.dll"]
然後打開項目所在的目錄,當前目錄中需包含Dockerfile文件,然後在地址欄中輸入CMD
並回車,打開CMD控制檯
在CMD控制檯上輸入以下命令生成Docker鏡像
docker build -t aspnetcore:v2.0 .
但是生成報錯error MSB3073: The command "npm install" exited with codee 127.
這是由於在進行發佈操作時,是基於mcr.microsoft.com/dotnet/core/sdk:3.1-buster
這個基礎鏡像的,這個鏡像只有dotnet sdk
,並沒有安裝npm
解決方案:
調整Dockerfile,在發佈前在mcr.microsoft.com/dotnet/core/sdk:3.1-buster
這個鏡像中安裝nodejs:
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY . .
RUN dotnet build "AngularDemo03.csproj" -c Release -o /app/build
FROM build AS publish
# 安裝nodejs
RUN curl -sL https://deb.nodesource.com/setup_14.x | bash -
RUN apt-get install -y nodejs
RUN dotnet publish "AngularDemo03.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "AngularDemo03.dll"]
再次運行
docker build -t aspnetcore:v2.0 .
3、查看鏡像
生成成功後,可以使用以下命令查看鏡像
docker images
4、使用鏡像運行容器
可以通過以下命令運行一個容器
docker run -it -d -P aspnetcore:v2.0
運行成功後可通過docker ps
查看對應的端口,然後在瀏覽器訪問這個端口即可
當然,也可以通過-p
命令指定端口,然後通過指定的端口訪問即可
docker -it -d -p 5002:80 aspnetcore:v1.0
..(img-NdbmDskw-1589640134565)]
當然,也可以通過`-p`命令指定端口,然後通過指定的端口訪問即可
docker -it -d -p 5002:80 aspnetcore:v1.0