.NET 5 部署在docker上运行

1、创建站点

创建一个ASP.NET Core Web应用程序,选中启用Docker支持。自动帮我们创建一个Dockerfile文件。

2、编写Dockerfile文件

dockerfile是一个文件格式的配置文件,用户可以使用dockerfile来快速构建自定义的镜像。由一行行命令语句组成,并且支持#开头的注释行。

dockerfile主题内容一般分为4部分

  1. 基础镜像信息

  2. 维护者信息使用label指令

  3. 镜像操作指令

  4. 容器启动时执行指令

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

#Depending on the operating system of the host machines(s) that will build or run the containers, the image specified in the FROM statement may need to be changed.
#For more information, please see https://aka.ms/containercompat

#FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
#WORKDIR /app
#EXPOSE 80
#EXPOSE 443
#
#FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
#WORKDIR /src
#COPY ["AA.Mvc/AA.Mvc.csproj", "AA.Mvc/"]
#RUN dotnet restore "AA.Mvc/AA.Mvc.csproj"
#COPY . .
#WORKDIR "/src/AA.Mvc"
#RUN dotnet build "AA.Mvc.csproj" -c Release -o /app/build
#
#FROM build AS publish
#RUN dotnet publish "AA.Mvc.csproj" -c Release -o /app/publish
#
#FROM base AS final
#WORKDIR /app
#COPY --from=publish /app/publish .
#ENTRYPOINT ["dotnet", "AA.Mvc.dll"]

# 父镜像
#FROM microsoft/aspnetcore:5.0
#FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS baseWORKDIR /app

FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
## 设置工作目录
#WORKDIR /app
#
## 复制发布文件到/app下
#COPY . /app
#
## 设置端口
#EXPOSE 5005
EXPOSE 80
COPY . .
# 使用AA.Mvc.dll来运行ASP.NET Core项目,注意大小写
#ENTRYPOINT ["dotnet", "AA.Mvc.dll", "--server.urls", "http://*:5005"]
ENTRYPOINT ["dotnet", "AA.Mvc.dll"]

dockerfile文件指令说明:

  • FROM -指定所创建镜像的基础镜像

  • WORKDIR-配置工作目录

  • EXPOSE-声明镜像内服务监听的端口

  • COPY-复制内容到镜像

  • ENTRYPOINT-启动镜像的默认人口命令

3、编译发布web项目

4、构建镜像,运行容器并浏览

创建镜像,可以使用命令docker build,如下所示:

docker build -t core-mvc .

这步可能会慢一些,因为需要下载运行环境,请耐心等待

参数分解:

  • -t ---指定镜像名称

  • 命令结尾处 . ---表示build上下文为当前目录,默认情况下docker会使用在上下文的根目录下找到Dockerfile文件

查看镜像列表,输入一下命令

docker images

创建并启动、查看容器

docker run --name netcore-mvc -d -p 50879:80  core-mvcdocker ps -a

参数说明

  • -d ,表示在后台以守护态(daemonized)形式运行容器

  • -p 外部端口与内部容器端口映射。

  • --name 指定容器的名称。当然可以不指定,默认会为我们创建

这里如果docker run失败后再次运行会提示名称已存在,可以使用以下命令来删除容器

docker rm -f netcore-mvc

最后一个参数 core-mvc 就是我们刚创建的镜像名称,经过以上4个步骤,在浏览器中输入地址http://localhost:50879/查看如图

至此一个完整的项目以手工的方式运行在docker容器中。

(0)

相关推荐

  • docker 发布 dotnet3.1 web

    docker 发布 dotnet3.1 web

  • 使用 docker 部署 mdnice

    dotNET跨平台 昨天 以下文章来源于amazingarch ,作者WeihanLi amazingarch 了不起的架构,迷人的架构知识,架构点滴 使用 docker 部署 mdnice Intr ...

  • docker之CMD, ENTRYPOINT, RUN使用和对比

    CMD CMD命令是在容器启动后执行的命令,一个Dockerfile可以有多个CMD,但是只有最后一个CMD生效.当容器启动时如果指定了命令,那么CMD的命令将被忽略. 写一个Dockerfile F ...

  • Docker 镜像优化:从 1.16GB 到 22.4MB

    来源:架构头条(ID:ArchFront) Docker 是一个供软件开发人员和系统管理员使用容器构建.运行和与分享应用程序的平台.容器是在独立环境中运行的进程,它运行在自己的文件系统上,该文件系统是 ...

  • docker上如何快速安装部署ngnix?非常详细~

    确保操作系统上已经安装docker.如果没有安装可参考我已发布的[centos7上如何安装docker]安装操作步骤.这里还是以centos来操作. 一.确保docker已经启动,执行拉取最新的ngn ...

  • 【行业动态】罗罗推出新公务发动机:效率提高5%,能在100%SAF上运行

    导读:据greencarcongress网站5月7日报道,罗罗公司正式推出Pearl 10X发动机,这是该公司在公务航空动力市场上市场领先的Pearl发动机系列的第三款,也是推力最大的型号. 罗罗公司 ...

  • jboss( WildFly)上运行 springboot程序

    WildFly,原名 JBoss AS(JBoss Application Server) 或者 JBoss,是一套应用程序服务器,属于开源的企业级 Java 中间件软件,用于实现基于 SOA 架构的 ...

  • “拒绝在 iPad 上运行 Xcode!”

    以下为译文: 自从苹果宣布最新的 iPad Pro 搭载了 M1 芯片以来,一直热议不断.有些人很疑惑:"我们要这个芯片干什么?"而有些苹果平台的开发人员则认为:"如果我 ...

  • 在 Azure App Service 上运行 .NET 6 预览版

    dotNET跨平台 昨天 以下文章来源于汪宇杰博客 ,作者汪宇杰 汪宇杰博客微软最有价值专家(MVP)汪宇杰,致力于Azure..NET等技术方向.无广告,不卖课,做纯粹的技术公众号.博客地址 htt ...

  • 科学家破解意识之谜,人脑或在11个维度上运行

    人的意识可能是宇宙中的最大谜题,虽然我们已可触及到时间和空间的最初起源,但对人的意识如何产生,有着怎样一种运行机制,几乎还一无所知. 瑞士洛桑联邦理工学院(EPFL)神经科学家亨利·马克姆主持的蓝脑计 ...

  • 国行Switch卡带或完全无法在非国行Switch上运行!任天堂港服eShop更新上线游戏兑换券!

    GameStop在美国关闭数十家店铺 曾几何时,GameStop是美国乃至全球的实体游戏大帝国.GameStop不仅吞并了其他几家实体游戏零售公司,在美国各地开了数量惊人的店铺.然而现在,实体游戏店正 ...

  • 基于群晖docker下运行甜糖星愿、定时收取星愿(2021

    甜糖星愿计划是由甜糖公司结合边缘计算云厂商推出的用户激励计划.用户通过贡献闲置带宽,即可获取星愿积分.星愿可用于折现或兑换商品.但他只能在Arm架构设备运行,稍有不便.幸好有网友已经打包了x86下可以 ...

  • 【复盘】指数还在趋势线上运行。

    声明:公众号tangulunjinwx不做个股诊断,更不推荐个股,也不接受各类商务合作,不建群,不加微信等,写博文目的是总结和提高自己的同时分享给朋友们学习参考之用,不作为交易依据,盈亏请自负. 说实 ...