美文网首页
Docker部署.net core项目

Docker部署.net core项目

作者: 异步木依 | 来源:发表于2020-08-17 17:34 被阅读0次
    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

    相关文章

      网友评论

          本文标题:Docker部署.net core项目

          本文链接:https://www.haomeiwen.com/subject/nvnhrktx.html