从0开始新建一个 asp.netcore webmvc项目,并将项目发布到centos系统中的docker容器里,实现方法如下:
1.新建一个.netcore web mvc项目
用vs2019新建一个名称为demo1.MvcOne 的.netcore web mvc项目
点击 【下一步】 按钮
点击 【创建】按钮
选择WEB应用程序(模型视图控制器),点击【创建】按钮
创建后的目录结构
打开View/Home/Index.cshtml文件,编辑一点自定义内容
先在本地测调试 一下,看能否跑起来,将 demo1.MvcOne设置为启动项目,按F5启动。
2. 发布demo1.MvcOne项目
将demo1.MvcOne发布到本地的一个文件夹。
点击【创建配置文件】按钮
点击【发布】按钮,发布完成后在本地发布的文件夹中添加一个Dockerfile的文本文件,此文件没有后缀
编辑Dockerfile文件的内容,不要用 vs code或vs2019自动生成的Dockerfile,不好用。
编辑Dockerfile文件的内容为:
#添加.nencore3.1基础镜像 FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base #容器工作目录 WORKDIR /app #指定项webapi或mvc站点的内部启动端口,默认是80 ENV ASPNETCORE_URLS http://+:50001 #暴露docker容器端口 EXPOSE 50001 #拷贝发布目录下的所有文件到容器的工作根目录 #COPY . . (这样写也可以) COPY ./ ./ #容器入口点 ENTRYPOINT ["dotnet", "demo1.MvcOne.dll"]
3. 将发布好的文件,全部上传到centos
将发布好的本地文件夹中的所有文件,指 G:codepublishdemo1demo1.MvcOne 目录里的所有文件,全部上传到centos的某个文件夹里面,可以用gitLab上传,或者用xftp上传。
我这里用xftp上传来演示:
4. 在centos里创建docker本地镜像
创建docker镜像的前提条件,先要在centos上安装docker-ce,安装docker-ce的步骤请参考 centos7.6安装docker ,
(1) 下载.netcore 3.1基础镜像
下载基础镜像 mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim ,.netcore3.1需要用到此基础镜像。此镜像比较大,下载需要较长时间。
docker pull mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim
如果用源码来构建镜像,还需要下载 mcr.microsoft.com/dotnet/core/sdk:3.1-buster 镜像,用源码构建镜像的Dockerfile需要另外配置,本篇不详解。
docker pull mcr.microsoft.com/dotnet/core/sdk:3.1-buster
(2) 构建本地镜像
进入 centos的demo1.MvcOne项目发布文件夹(比如 /projectpublish/demo1.MvcOne),使用docker build命令构建本地镜像。
docker build -t demo1.mvcone .
demo1.mvcone表示镜像名,镜像名必须小写,注意后面个点号(.),并且点号前面有个空格,表示构建镜像到当前目录。
构建镜像成功出现以下信息:
用docker images 命令查看镜像列表
5. 创建容器
容器是镜像的实例,创建demo1.mvcone镜像的容器
docker run -d --name my.demo1.mvcone -p 8001:50001 -v /appdata/mvcone demo1.mvcone
-d 后台运行容器
--name 容器名
-p 8001:50001 冒号前面的8001表示对象访问的端口,冒号后面的50001表示容器内部端口。
-v 为容器设置卷路径,可随意指定卷路径,这里是在/appdata/mveone 目录下。
最后面的demo1.mvcone 表示镜像名
查看运行中的容器:
docker ps
若容器启动成功,访问my.demo1.mvcone站点的效果:
6. 如何将本地镜像上传到docker hub
通常在生产环境,开发的项目需要集群部署,为了让其它docker服务能快速的拉取镜像,需要将本地镜像上传到dokcer仓库,docker仓库分为官方公有仓库docker hub及私有仓库harbar,使用私有仓库harbor需要搭建harbor环境,本文不讲述,本文以上传到docker hub为例。
(1) 添加镜像Tag
使用Tag标记本地像镜,将本地镜像 demo1.mvcone 标记为 yyee/demo1.mvcone , yyee是我在dockerhub的帐号名,也是默认的仓库名。
标记前后对比:
(2) 登录docker hub
docker login
然后输入在docker hub注册的用户名和密码,如果还没有注册dokcer hub帐号,请先注册docker hub帐号,注册URL: https://hub.docker.com/
(3) 上传镜像
登录成功后,使用docker push命令上传本地镜像到docker hub仓库
dokcer push yyee/demo1.mvcone
上传前后对比: