1、新建Core3.0项目

1.1 使用visual studio 2019 创建一个名为core3.web.httpapi 的"ASP.NET Core Web应用程序"





1.2 运行项目,确保可以正常访问



1.3 launchSettings.json里的部分配置(默认值,未修改,这里只是展示下)

{
"core3.web.httpapi": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "weatherforecast",
"applicationUrl": "http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}

2、配置Dockerfile

2.1 项目根目录下创建一个Dockerfile的文件,下图配置里的8001端口是docker运行端口,上面截图的5000是launchSettings.json配置的端口(开发环境运行端口),并不是一个意思,当然也可以配置成一样的

FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim
WORKDIR /app
EXPOSE 8001
COPY . .
ENV ASPNETCORE_URLS http://+:8001
ENTRYPOINT ["dotnet", "core3.web.httpapi.dll"]

2.2 配置说明:

FROM :设置镜像源,暂时没有找到更小的源,后续有的话再补充

WORKDIR:配置工作目录

COPY . . :复制发布后的bll文件到app目录下

EXPOSE 8001 :这里的意思是开放容器内的8001端口,并不是代码用这个端口

ENV :配置系统环境变量,比如程序环境环境等在这里配置(开发、预发、线上环境)

ENV ASPNETCORE_URLS :同上,这里是配置程序运行端口 如果程序不使用默认的80端口这里一定要设置(程序运行端口)

ENTRYPOINT:启动入口

2.3 Dockerfile上右键点击属性,设置问"如果较新则复制" ,目的是发布的时候把Dockerfile复制到发布后的目录,方便执行docker指令



2.4 完整的项目结构图

3、Centos服务器端配置

此实例是在centos下编译+发布,所以要求centos服务器是上至少要安装docker、netcore 3.0 sdk(非runtime),一般情况会在服务器上装好Git,这样本地开发,直接在服务器上用shell脚本pull代码、编译、构建、运行docker镜像(一步到位执行完毕),下面主要说明centos上编译netcore和运行docker的过程。

3.1、安装Git 参考:https://www.cnblogs.com/nickchou/p/10931495.html

3.2、安装docker 参考: https://www.cnblogs.com/nickchou/p/8658541.html

3.3、安装net core 3.0 sdk ,并查看dotnet版本

sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
sudo yum install dotnet-sdk-3.0
dotnet --version

4、编译netcore代码

假设代码已经在centos上了,不管是通过ftp上传的还是git pull

4.1 cd命令切换到启动项目的文件夹,假设路径是在root下,可根据实际情况修改路径

cd /root/testdocker/core3.web.httpapi

4.2 编译当前项目代码发布到./publish目录下

dotnet publish -o ./publish -c Release



发布后的文件目录如下,Dockerfile已经在根目录下了

5、构建docker镜像

5.1 cd切换到发布后的目录下

cd /root/testdocker/core3.web.httpapi/publish

5.2 构建镜像

docker build -t httpapi:1.0 .

说明:":1.0" 是版本号(也可以不写,这样就没有版本号),注意上面指令后面有一个"." 不能漏,代表当目前目录的意思

如果出现错误:

Error parsing reference: "mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base" is not a valid repository/tag: invalid reference format

问题原因:Dockerfile里FROM最后一段写了 AS base ,这个是docker的新特性multi-stage build,需要Docker17.0.5 以上的版本才能用,VS自动生成出来的Dockerfile里也有这一段。

解决办法:

1、升级Docker版本,方法有点麻烦,且一般买的服务器(阿里云、华为云)默认Docker版本都是1.13.1左右

2、不用multi-stage build的话,直接去掉AS base即可,我们的案例中并不需要



5.3 查看docker镜像

docker images

可以看到生成了2个镜像,一个是我们Dockerfile里写的FROM镜像,一个是我们自己生成的

6、运行docker镜像

docker run -d -p 8001:8001 --name myhttpapi httpapi:1.0

6.1 指令说明 :

-d 意思是后台运行

-p 第一个8001是外网端口,第二个8001是docker端口。如果配置80:8001就是外网的80端口映射到docker的8001端口

-name 指定一个别名,这里写的是myhttpapi

httpapi:1.0 意思是从httpapi这个镜像的1.0版本运行

注意事项:如果你的服务器是阿里、腾讯、华为云等,配置的端口一定要在安全组配置里打开,比如下面的8001端口,不然访问不了



6.2 网页返回:

源代码下载:https://files.cnblogs.com/files/nickchou/testdocker.zip

7、Docker 指令扩展

7.1 刚我们步骤6.1发布的docker想看看容器里面的文件,指令如下(指令中的myhttpapi也可以换成容器ID )

docker exec -it myhttpapi bash

查看文件列表

ls



退出容器的快捷键 ctrl+p+q ,别忘了执行哦(意思是退出但不关闭容器)

7.2 停止运行的容器

docker stop myhttpapi

7.3 删除容器ID

docker rm 容器ID

7.4 删除镜像,如果镜像有被使用的话最好先删除了。

docker rmi  容器ID

7.5 清理悬空容器,一般可以配合7.2~7.4的指令用,清理停止的、无效的容器

docker system prune

7.6 查看镜像

docker images

7.7 查看运行的镜像,加-a 意思是停止的容器也列出来,不加-a只列正在运行的

docker ps -a

基本上常用的就这些了,其他的请自行查资料!!

centos 7 + Net Core 3.0 + Docker 配置说明(不含https)的更多相关文章

  1. centos 7 && dotnet core 2.0 && nginx && supervisor

    前提 系统:centos 7 目录:/home/wwwroot/www.wuball.com dotnet core 2.0 官方指引 sudo rpm --import https://packag ...

  2. centos下 .net core 2.0 升级 到 2.1 遇到的一个小问题

    .net core 2.0的安装方式,可能不是用yum方式安装的,所以,在用yum安装2.1之后,无法运行.net core 所以用来下面的这个命令,重新映射一下dotnet目录. ln -s /us ...

  3. CentOS下 .Net Core 1.0 升级到 3.0 遇到的一个小问题

    之前.net core 1.0的安装方式,不是用yum方式安装的,所以,在用yum安装3.0之后,用dotnet --version还是1.0的版本,想起了之前 做过链接映射dotnet目录,删除之前 ...

  4. Centos 7 ASP.NET Core 1.0 Docker部署

    先决条件 64位,内核3.10以上,查看当前的内核版本,打开一个终端使用uname -r显示您的内核版本             安装 sudo yum update     sudo tee /et ...

  5. 记CentOS 发布.NET Core 2.0

    centos 7.x sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc sudo sh -c 'echo -e & ...

  6. CentOS 部署.net core 2.0 项目

    上传项目到服务器 安装Nginx(反向代理服务器),配置文件 https://www.cnblogs.com/xiaonangua/p/9176137.html 安装supervisor https: ...

  7. :成功配置 centos + nginx + .net core 2.0

    https://segmentfault.com/a/1190000010763523

  8. centOS发布.Net Core 2.0 API

    1.dotnet  xxx.dll & & 放在启动参数后面表示设置此进程为后台进程.(目前测试无效) 2.ps -ef | grep xxx ps:将某个进程显示出来 -A 显示所有 ...

  9. docker 安装jenkins 发布 asp.net core 2.0

    安装Docker 其实安装Docker的过程,大家可以到Docker官网找到自己相对应的安装文档进行安装,Docker区分CE和EE的两个版本,具体这两个版本有什么区别,大家自行查阅相关资料,这里不再 ...

随机推荐

  1. mac go环境的安装和卸载

    背景: go环境的安装和卸载, 之前安装过go1.12, 现在项目需要,要安装go1.13. 所以要做的是先卸载, 然后在安装 本文介绍以下几个问题 1. go环境的卸载 2. go环境的安装 3. ...

  2. jquery设置input不可编辑,背景变灰,鼠标变禁止

    先看效果 $("#id").attr("onfocus", "this.blur()"); $("#id").css(& ...

  3. jenkins持续集成(windows slave+svn+.net)

    一.Windows slave配置 1.系统管理->节点管理->新建节点 2.节点列表中点击新增的节点名称按提示下载agent.jar, 在windows slave机器执行(copy页面 ...

  4. DISCO Presents Discovery Channel Code Contest 2020 Qual Task E. Majority of Balls

    Not able to solve this problem during the contest (virtual participation). The first observation is ...

  5. 【LOJ】#2239. 「CQOI2014」危桥

    LOJ#2239. 「CQOI2014」危桥 就是先把每条边正着连一条容量为2的边,反着连一条容量为2的边 显然如果只有一个人走的话,答案就是一个源点往起点连一条容量为次数×2的边,终点往汇点连一个次 ...

  6. POJ1631_高深DP

    按照那个图形研究比较了一会, 居然发现是最长上升子序列问题, 这个是真的牛逼!! 只不过是题目没有说的那么直白!

  7. Java学习总结一 数据类型

    @Java300 学习总结 一.Java 基本数据类型分类如下: 整型变量:byte.short.int.long 浮点型变量:float.double 字符型变量:char 布尔型变量:boolea ...

  8. C++11 bind和function用法

    function是一个template,定义于头文件functional中.通过function<int(int, int)> 声明一个function类型,它是“接受两个int参数.返回 ...

  9. 【Trie】Nikitosh 和异或

    [参考博客]: LOJ#10051」「一本通 2.3 例 3」Nikitosh 和异或(Trie [题目链接]: https://loj.ac/problem/10051 [题意]: 找出两个不相交区 ...

  10. 作业1:java虚拟机内存模型图示

    看了很多篇文章,整理成一幅图,但仍然有许多不解的地方,以后再接着完善,哪位大神看到不正确的地方,请指出,谢谢.