Dockerfile 的一些说明

@zgcwkj  2023年01月27日

分类:

代码 其它 

Docker 容器的 Dockerfile 构建文件说明

Dockerfile 编写

# 请参阅 https://aka.ms/containerfastmode 以了解 Visual Studio 如何使用此 Dockerfile 构建图像以加快调试速度

# base 阶段
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80

# 安装字体库
RUN apt-get update && apt-get install -y libfontconfig1

# build 阶段
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
# 环境变量
ENV PATH="${PATH}:/root/.dotnet/tools"
# 还原项目
WORKDIR /src
COPY ["zgcwkj.Demo/zgcwkj.Demo.csproj", "zgcwkj.Demo/"]
RUN dotnet restore "zgcwkj.Demo/zgcwkj.Demo.csproj"
# 复制到容器目录
COPY . .
# 构建项目
WORKDIR "/src/zgcwkj.Demo"
RUN dotnet build "zgcwkj.Demo.csproj" -c Release -o /app/build
# 构建数据库
WORKDIR "/src/zgcwkj.Data"
RUN dotnet tool install -g dotnet-ef
#RUN dotnet ef migrations add init
RUN dotnet ef database update
RUN cp -r DataDB.db /app

# publish 阶段
FROM build AS publish
WORKDIR "/src/zgcwkj.Demo"
RUN dotnet publish "zgcwkj.Demo.csproj" -c Release -o /app/publish /p:UseAppHost=false

# final 阶段
FROM base AS final
# 切换工作目录
WORKDIR /app
# 复制 publish 阶段的文件
COPY --from=publish /app/publish .
# 复制 build 阶段的文件
COPY --from=build /app/DataDB.db .
# 默认入口命令
ENTRYPOINT ["dotnet", "zgcwkj.Demo.dll"]

Dockerfile 说明

指令说明
RUN执行命令
COPY复制命令

使用 Docker 构建镜像

构建
docker build -f zgcwkj.Demo/Dockerfile -t zgcwkjdemo .

运行
docker run -it -p 53111:80 zgcwkjdemo:latest

导出
docker save -o zgcwkjdemo.tar zgcwkjdemo:latest

导入
docker load -i zgcwkjdemo.tarx


评论已关闭

Top