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