撸.NET Core的正确姿势
特点
案例基于刚发布的.NET Core 2.1
只需一台Linux服务器搞定一切,
全程无需自己配置dotnet环境,
需要熟悉git
docker基础知识可有可无, 过了下面几个步骤,你就已经入门Docker了
涉及到的软件: git, docker, nginx (非必需)
新手耗时
.net core未入门: 不适合
git 未入门: + 30分钟
docker未入门: +2 小时
linux未入门: +2 小时
nginx未入门: +1小时
对于一个.net core已入门的新手, 最多6个小时可以完成这个实验, 对于上述知识都有储备的人,20分钟基本就可以完成(时间取决于你的网速).
前置准备
一台Linux服务器, 能连接外网(需要在线安装git, docker, 以及下载dotnet docker相关镜像), 下面的命令以debian 8为例, ubuntu与debian 命令相同, centos需要吧apt-get 替换为yum
1. 部署git
这样一台git服务器就好了, 如果有远程的github或者oscgit可以用,那可以省略这一步
apt-get install git
useradd git
passwd git 设置git账户的密码
2. 准备代码上传
su git
mkdir samplecode
cd samplecode
git init
创建git库
提交代码到 git@ip:samplecode.git
Dockerfile:
Dockerfile文件放到.csproj文件的目录, 用来生成Docker镜像
FROM microsoft/dotnet:2.1-aspnetcore-runtime
ARG source
WORKDIR /app
EXPOSE 80
COPY ${source:-Miao.WebApi/obj/Docker/publish} .
COPY ${source:-buildreport} .
ENTRYPOINT ["dotnet", "Miao.WebApi.dll"]
3. 部署docker
https://docs.docker.com/install/linux/docker-ce/debian/
apt-get install docker-ce
https://github.com/aspnet/aspnet-docker/tree/master/2.1
docker pull microsoft/dotnet:2.1-sdk 用来编译dotnetcore程序
docker pull microsoft/dotnet:2.1-aspnetcore-runtime 用来运行dotnetcore程序
4. 下载代码并编译打包
mkdir /src
cd /src
git clone git@ip:samplecode.git
cd samplecode
docker run -t -v ~/.dotnet:/root/.dotnet -v ~/.nuget:/root/.nuget -v ./:/src --workdir /srcmicrosoft/dotnet:2.1-sdk bash -c "dotnet restore ./sameplecode.sln && dotnet publish ./SamepleCode.csproj -c Release -o ./obj/Docker/publish"
docker build –t sampleweb:1.0 –file .\Dockerfile .\
5. 运行.net core 程序
docker run –d –it sampleweb:1.0 –p:8080:80
curl –I http://ip:8080
确认可以打开, 证明部署成功
6. 通过Nginx做反向代理(非必需)
官方建议kestrel(.net core 内置web服务器外层再加一层反代), 加了反代之后IP也能正确获取到
apt-get install nginx
nginx 配置文件
upstream sampleweb {
least_conn;
server 127.0.0.1:8080max_fails=3 fail_timeout=30s;
}
server {
listen 80;
server_name sampleweb.xxx.com;
location / {
proxy_pass http://sampleweb /;
proxy_read_timeout 90;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
}
撸.NET Core的正确姿势的更多相关文章
- Asp.Net Core 单元测试正确姿势
背景 ASP.NET Core 支持依赖关系注入 (DI) 软件设计模式,并且默认注入了很多服务,具体可以参考 官方文档, 相信只要使用过依赖注入框架的同学,都会对此有不同深入的理解,在此无需赘言. ...
- ASP.NET Core 2.0 中读取 Request.Body 的正确姿势
原文:ASP.NET Core 中读取 Request.Body 的正确姿势 ASP.NET Core 中的 Request.Body 虽然是一个 Stream ,但它是一个与众不同的 Stream ...
- .NET Core技术研究-HttpContext访问的正确姿势
将ASP.NET升级到ASP.NET Core之后,相信大家都会遇到HttpContext.Current无法使用的问题.这也是我们迁移ASP.NET Core必须解决的问题. 本文我们详细讨论一下, ...
- .NET Core 使用 K8S ConfigMap的正确姿势
背景 ASP.NET Core默认的配置文件定义在appsetings.json和appsettings.{Environment}.json文件中. 这里面有一个问题就是,在使用容器部署时,每次修改 ...
- 程序员节应该写博客之.NET下使用HTTP请求的正确姿势
程序员节应该写博客之.NET下使用HTTP请求的正确姿势 一.前言 去年9月份的时候我看到过外国朋友关于.NET Framework下HttpClient缺陷的分析后对HttpClient有了一定的了 ...
- SpringBoot 开发案例之参数传递的正确姿势
前言 开发这么多年,肯定还有不少小伙伴搞不清各种类型的参数是如何传递的,很多同学都是拿来即用,复制粘贴一把撸,遇到问题还是一脸懵逼. 姿势 学习参数传递的正确姿势,先说怎么做,再说为什么,本质上还是复 ...
- .NET下使用HTTP请求的正确姿势
来源:Lewis.Zou cnblogs.com/modestmt/p/7724821.html 一.前言 去年9月份的时候我看到过外国朋友关于.NET Framework下HttpClient缺陷的 ...
- Git 提交的正确姿势
Git 提交的正确姿势:Commit message 编写指南 SCOP范围 middleware core config plugin test type范围 Git 每次提交代码,都要写 Comm ...
- IphoneX适配正确姿势
IphoneX适配正确姿势 写在前面 距离18年9月iphonex发布以来已经快两年了(所以对于iphonex机型的头部刘海(sensor housing)和底部小黑条(Home Indicator) ...
随机推荐
- UI设计教程:关于版式设计
版式设计是视觉传达的重要手段之一,版式设计,即把有限的视觉元素在版面页进行有效的视觉组合,最优化地传达信息的同时,去影响受众,使受众产生视觉上的美感. 版式设计基本流程 在进行版式设计时,设计作品的 ...
- Java 中转换为String类型的四种方法
1. 使用 String 的构造方法,用于 byte[], char[], StringBuffer, StringBuilder 类型 2. 使用 String 的静态方法 valueOf() 推荐 ...
- 安装ubuntu16.04的时候出现的detecting file system
解决问题方法是,进入主界面执行,如下操作即可: sudo umount -l /isodevice
- 如何烧写BIOS到SD卡里面
针对TINY6410 ADK型号 1.SD卡格式化为FAT32或者FAT格式 2.将SD卡插入USB接口的读卡器,并插在PC的USB口 3.“以管理员身份运行”SD-Flasher.exe(在tiny ...
- 【转载】 IP实时传输协议RTP/RTCP详解
http://www.chinaitlab.com/cisco/RIP/832426.html 1.简介 目前,在IP网络中实现实时语音.视频通信和应用已经成为网络应用的一个主流技术和发展方向,本文详 ...
- 操作Float的BigDecimal加减乘除
bignum3 = bignum1.add(bignum2); //加 bignum3 = bignum1.subtract(bignum2); 减 bignum3 = bignum1.m ...
- 再读c++primer plus 006
使用类: 1.重载限制:(1)重载后的运算符必须至少有一个操作数是用户定义的类型,这将防止用户为标准类型重载运算符 (2)使用运算符时不能违反运算符原来的语法规则,不能修改运算符的优先级 (3)不能创 ...
- HierSort(希尔)————Java
利用Java进行希尔排序(元素中有0会有问题),步长经过调试length/2+1最合适. import java.util.Scanner; public class HierSort { priva ...
- win/mac平台搭建ionic开发环境教程(转)
出处:http://www.ionic-china.com/doc/ionic-winmac.html#preface 前言 ionic中文网为大家准备了绿色版的nodejs和androidSDK以及 ...
- hdu6365 2018 Multi-University Training Contest 6 1004 Shoot Game
http://acm.hdu.edu.cn/showproblem.php?pid=6365 细节处理 unique返回的是最后一位的后一位,因此从1开始的数组要减去(p+1) 结构体可以用unqiu ...