- 發(fā)布項目,運行命令:
dotnet publish -c Release -o published//在發(fā)布模式(默認(rèn)為調(diào)試模式)下生成應(yīng)用程序
- 在published 文件夾添加 Dockerfile文件
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
WORKDIR /app
# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore
# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out
# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "WebApp.dll"]
剛開始用的以上配置细溅,結(jié)果mcr.microsoft.com的鏡像拉取特別慢眉抬,卡死了幾次唐责,然后改為docker-mcr的 DockerHub 加速器,感興趣的看這篇https://www.cnblogs.com/newbe36524/p/13148707.html
配置如下:
FROM newbe36524/sdk:3.1 AS build-env
WORKDIR /app
# Build runtime image
FROM newbe36524/aspnet:3.1
WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet", "WebApp.dll"]
dockerfile文件指令說明:
- FROM -指定所創(chuàng)建鏡像的基礎(chǔ)鏡像
- WORKDIR-配置工作目錄
- EXPOSE-聲明鏡像內(nèi)服務(wù)監(jiān)聽的端口 (可以不寫卑惜,因為我們具體映射的端口可以在運行的時候指定)
- COPY-復(fù)制內(nèi)容到鏡像 (. .代表當(dāng)前目錄)
- ENTRYPOINT-啟動鏡像的默認(rèn)人口命令
- 將published文件傳到Linux上
構(gòu)建docker鏡像膏执,這里要注意后面有個點并且只能鏡像名稱只能小寫
sudo docker build -t webapi .
查看鏡像:docker images
image.png
- 創(chuàng)建并啟動容器
-p是5001是容器對外端口,80是容器內(nèi)機(jī)器端口露久。意思是映射外網(wǎng)8041端口到本地容器80端口更米。
docker run --name myfirstWeb -d -p 5001:80 webapi
查看容器:docker ps -a
image.png