malema.net 网站的 docker file

malema 的项目文件结构

dockerfile-web

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build-env
WORKDIR /app

COPY ./Malema.Web/*.csproj ./Malema.Web/
COPY ./Malema.Interfaces/*.csproj ./Malema.Interfaces/
COPY ./Malema.Infrastructure/*.csproj ./Malema.Infrastructure/

RUN dotnet restore ./Malema.Web/Malema.Web.csproj

COPY . .
# 跑单元测试
# RUN cd xxx.Tests && dotnet test 

RUN cd Malema.Web && dotnet publish -c Release -o out

FROM mcr.microsoft.com/dotnet/aspnet:6.0
WORKDIR /app
COPY --from=build-env /app/Malema.Web/out .

#设置时间为中国上海,默认为UTC时间
ENV TZ=Asia/Shanghai
EXPOSE 80 #声明端口 docker -P会自动映射

ENTRYPOINT [ "dotnet","Malema.Web.dll" ]

上面的构建过程我们分成了两步。 第一步是用SDK来编译生成。 第二步使用aspnet:6.0镜镜。把第一步生成的文件从 /app/Malema.Web/out 拷到了 拷到 /app 最后一步用EntryPoint来启动它。

生成

Devops我们用的是腾讯云的 coding 平台 使用下面的脚本来生成

docker build -f Src/dockerfile-web -t ${env.CODING_DOCKER_SERVER_IMAGE_NAME}:${env.DOCKER_IMAGE_VERSION} ./Src

然后将这个image push到我们自己的私有仓库

        script {
          docker.withRegistry(
            "${CCI_CURRENT_WEB_PROTOCOL}://${env.CODING_DOCKER_REG_HOST}",
            "${env.CODING_ARTIFACTS_CREDENTIALS_ID}"
          ) {
            docker.image("${env.CODING_DOCKER_SERVER_IMAGE_NAME}:${env.DOCKER_IMAGE_VERSION}").push()
          }
        }

剩下就是部署到kuberntest平台了。

最近更新的
...