Docker部署.net core项目

  1. 发布项目,运行命令:
dotnet publish -c Release -o published//在发布模式(默认为调试模式)下生成应用程序
  1. 在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"]

刚开始用的以上配置,结果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 -指定所创建镜像的基础镜像
  • WORKDIR-配置工作目录
  • EXPOSE-声明镜像内服务监听的端口 (可以不写,因为我们具体映射的端口可以在运行的时候指定)
  • COPY-复制内容到镜像 (. .代表当前目录)
  • ENTRYPOINT-启动镜像的默认人口命令
  1. 将published文件传到Linux上
    构建docker镜像,这里要注意后面有个点并且只能镜像名称只能小写
sudo docker build -t webapi .

查看镜像:docker images

image.png
  1. 创建并启动容器
    -p是5001是容器对外端口,80是容器内机器端口。意思是映射外网8041端口到本地容器80端口。
docker run --name myfirstWeb  -d -p 5001:80  webapi

查看容器:docker ps -a

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容