centos 7 + Net Core 3.0 + Docker 配置说明(不含https)
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)的更多相关文章
- centos 7 && dotnet core 2.0 && nginx && supervisor
前提 系统:centos 7 目录:/home/wwwroot/www.wuball.com dotnet core 2.0 官方指引 sudo rpm --import https://packag ...
- centos下 .net core 2.0 升级 到 2.1 遇到的一个小问题
.net core 2.0的安装方式,可能不是用yum方式安装的,所以,在用yum安装2.1之后,无法运行.net core 所以用来下面的这个命令,重新映射一下dotnet目录. ln -s /us ...
- CentOS下 .Net Core 1.0 升级到 3.0 遇到的一个小问题
之前.net core 1.0的安装方式,不是用yum方式安装的,所以,在用yum安装3.0之后,用dotnet --version还是1.0的版本,想起了之前 做过链接映射dotnet目录,删除之前 ...
- Centos 7 ASP.NET Core 1.0 Docker部署
先决条件 64位,内核3.10以上,查看当前的内核版本,打开一个终端使用uname -r显示您的内核版本 安装 sudo yum update sudo tee /et ...
- 记CentOS 发布.NET Core 2.0
centos 7.x sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc sudo sh -c 'echo -e & ...
- CentOS 部署.net core 2.0 项目
上传项目到服务器 安装Nginx(反向代理服务器),配置文件 https://www.cnblogs.com/xiaonangua/p/9176137.html 安装supervisor https: ...
- :成功配置 centos + nginx + .net core 2.0
https://segmentfault.com/a/1190000010763523
- centOS发布.Net Core 2.0 API
1.dotnet xxx.dll & & 放在启动参数后面表示设置此进程为后台进程.(目前测试无效) 2.ps -ef | grep xxx ps:将某个进程显示出来 -A 显示所有 ...
- docker 安装jenkins 发布 asp.net core 2.0
安装Docker 其实安装Docker的过程,大家可以到Docker官网找到自己相对应的安装文档进行安装,Docker区分CE和EE的两个版本,具体这两个版本有什么区别,大家自行查阅相关资料,这里不再 ...
随机推荐
- 最新 朗玛信息java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.朗玛信息等10家互联网公司的校招Offer,因为某些自身原因最终选择了朗玛信息.6.7月主要是做系统复习.项目复盘.Leet ...
- Django之session详解
好文章来自追风的小蚂蚁:https://www.cnblogs.com/zhuifeng-mayi/p/9099811.html cookie:Cookie,有时也用其复数形式 Cookies,指某些 ...
- 用java转换文件的字符集
中文乱码真的是让人很头疼问题,有了这个方法应该能缓解这种头疼,用的是递归方式查找文件,直接在原文件中修改,小心使用(在本地测试效果有点诡异呀,没有达到预期效果). package com.hy.uti ...
- java-监听器(Listener)
监听器:用于监听web应用中某些对象.信息的创建.销毁等动作,服务器会自动调用相应的方法进行处理.常用于统计在线人数,初始化系统参数等. Javaweb监听器主要监听对象有ServletContext ...
- Python解Leetcode: 725. Split Linked List in Parts
题目描述:给定一个单链表,写一个函数把它分成k个单链表.分割成的k个单链表中,两两之间长度差不超过1,允许为空.分成的k个链表中,顺序要和原先的保持一致,比如说每个单链表有3个结点,则第一个单链表的结 ...
- Reactor 线程模型以及在netty中的应用
这里我们需要理解的一点是Reactor线程模型是基于同步非阻塞IO实现的.对于异步非阻塞IO的实现是Proactor模型. 一 Reactor 单线程模型 Reactor单线程模型就是指所有的IO操作 ...
- WPF入门(2)——数据绑定与INotifyPropertyChanged(INPC)
接上篇,我们在MainViewModel类中创建个属性: public string Name { get; set; } 然后去UI的xaml文件中binding一下: 此时运行程序是不会得到我们想 ...
- 复习最短路 spfa+dijstra堆优化
题目很简单,, 但是wa了三次,, 用<vector>之前一定要记得clear()...简单说下 spfa的问题 和bell_forman有点类似 每次取出一个点 然后更新 并把更新了的节 ...
- VS219 没有.net core 3.0模板
控制台命令 dotnet --info dotnet --version 都正常显示有安装3.0 需要升级VS 2019 16.3.3,本地版本为16.3.2
- Linux下定时任务的查看及取消
crontab -l 表示列出所有的定时任务 crontab -r 表示删除用户的定时任务,当执行此命令后,所有用户下面的定时任务会被删除,执行crontab -l后会提示用户:“no crontab ...