一、新建项目:Linux.Web
二、添加docker file
三、将Dockerfile 移动到外层目录
由于项目使用了私仓,所以添加一行:
COPY ["nuget.config", "/src"]
完事的Dockerfile 内容:
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
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 ["Linux.Web/Linux.Web.csproj", "Linux.Web/"]
COPY ["nuget.config", "/src"]
RUN dotnet restore "Linux.Web/Linux.Web.csproj"
COPY . .
WORKDIR "/src/Linux.Web"
RUN dotnet build "Linux.Web.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "Linux.Web.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Linux.Web.dll"]
四、添加nuget.config
私仓: <add key="saas" value="http://192.168.1.108:71/nuget" />
完整的nuget.config内容:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- defaultPushSource key works like the 'defaultPushSource' key of NuGet.Config files. -->
<!-- This can be used by administrators to prevent accidental publishing of packages to nuget.org. -->
<config>
<add key="defaultPushSource" value="https://contoso.com/packages/" />
</config>
<!-- Default Package Sources; works like the 'packageSources' section of NuGet.Config files. -->
<!-- This collection cannot be deleted or modified but can be disabled/enabled by users. -->
<packageSources>
<add key="saas" value="http://192.168.1.108:71/nuget" />
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
</packageSources>
<!-- Default Package Sources that are disabled by default. -->
<!-- Works like the 'disabledPackageSources' section of NuGet.Config files. -->
<!-- Sources cannot be modified or deleted either but can be enabled/disabled by users. -->
</configuration>
五、拷贝到linux 服务器:/data/wwwroot
六、打包镜像
docker build -t linux.web:v1.0.1 .