使用docker发布应用分为两种方式
1.使用源码直接发布:在创建项目的时候,vs会自动生成一个叫Dockerfile 的文件,我们一般会根据这个文件来制作镜像,然后将镜像运行在docker容器中。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 ["xxx.Admin.Web/United.Admin.Web.csproj", "xxx.Admin.Web/"]
COPY ["xxx.WebCommon/United.WebCommon.csproj", "xxx.WebCommon/"]
COPY ["Company.Framework/Company.Framework.csproj", "Company.Framework/"]
COPY ["Company.Domain/Company.Domain.csproj", "Company.Domain/"]
COPY ["Company.Application.Shared/Company.Application.Shared.csproj", "Company.Application.Shared/"]
COPY ["Company.Application.Admin/Company.Application.Admin.csproj", "Company.Application.Admin/"]
RUN dotnet restore "United.Admin.Web/United.Admin.Web.csproj"
COPY . .
WORKDIR "/src/xxx.Admin.Web"
RUN dotnet build "xxx.Admin.Web.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "xxx.Admin.Web.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "xxx.HealthWeb.dll"]
从以上代码上可知,Dockerfile 指定了.netcore 的SDK和Runtime的版本镜像。开发80端口,指定工作目录 SRC 复制相关的类库到工作目录,然后对项目进行了还原,构建,发布,等三个动作,这三个动作做完以后 运行当前dll文件。这种方法虽然很爽,但是有坑有坑有坑。当我们进入了项目目录的时候,执行docker build 的时候,发现出问题了。。具体如何提示的我懒就不想截图的,大概报的错是dockerfile中的路径问题。。系统给我们生成的dockerfile 我们不要全信。里面的路径大多数是有问题的 大家使用的时候,一定要仔细核对。
2.在VS中发布后的项目做Docker镜像制作
VS发布项目的步骤应该都很熟悉了,在VS发布后会生成一个名为publish文件夹,直接进入publish文件夹里执行命令 docker build 操作。但是Dockerfile 文件中会有相应的改变,之前的还原,构建,发布的三个动作已经在VS中完成。只需要执行即可 修改后的Dockerfile如下
FROM mcr.microsoft.com/dotnet/aspnet:3.1 AS base FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build ENV ASPNETCORE_URLS http://+:40461 ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone COPY . /publish WORKDIR /publish EXPOSE 40461 ENTRYPOINT ["dotnet", "xxx.HealthWeb.dll"] 注意:是文件夹是publish 工作目录就是publish 标签:项目,Admin,csproj,Company,xxx,publish,发布,dotnet,docker From: https://www.cnblogs.com/lwh888888/p/18454706