1、Dockerfile放在sln同一层级。

2、Dockerfile

 1 # https://hub.docker.com/_/microsoft-dotnet
 2 FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
 3 WORKDIR /source
 4 
 5 # copy csproj and restore as distinct layers
 6 COPY *.sln .
 7 COPY netcoretest/*.csproj ./netcoretest/
 8 RUN dotnet restore
 9 
10 # copy everything else and build app
11 COPY netcoretest/. ./netcoretest/
12 WORKDIR /source/netcoretest
13 RUN dotnet publish -c release -o /app --no-restore
14 
15 RUN dotnet restore
16 
17 # copy everything else and build app
18 COPY netcoretest/. ./netcoretest/
19 WORKDIR /source/netcoretest
20 RUN dotnet publish -c release -o /app --no-restore
21 
22 # final stage/image
23 FROM mcr.microsoft.com/dotnet/aspnet:5.0
24 
25 # 放在最后一个FROM下,不能放在第一个sdk下。
26 # 最后生成的镜像,以最后一条 FROM 为准,之前的 FROM 会被抛弃。
27 # 每一条 FROM 指令都是一个构建阶段,多条 FROM 就是多阶段构建。
28 # 虽然最后生成的镜像只能是最后一个阶段的结果,但是,能够将前置阶段中的文件拷贝到后边的阶段中,这就是多阶段构建的最大意义。
29 # 最大的使用场景是将编译环境和运行环境分离
30 31 RUN apt-get update -y
32 RUN apt-get install python2.7 -y
33 RUN echo "alias python='/usr/bin/python2.7'">>/etc/bash.bashrc
34 
35 WORKDIR /app
36 COPY --from=build /app ./
37 ENTRYPOINT ["dotnet", "netcoretest.dll"]

3、还没测试:ENV TIMEZONE Asina/Shanghai

4、挂载在测试中。

5、python还没完全测试