擼.NET Core的正確姿勢
特點
案例基于剛發(fā)布的.NET Core 2.1
只需一臺Linux服務(wù)器搞定一切,
全程無需自己配置dotnet環(huán)境,
需要熟悉git
docker基礎(chǔ)知識可有可無, 過了下面幾個步驟,你就已經(jīng)入門Docker了
涉及到的軟件: git, docker, nginx (非必需)
新手耗時
.net core未入門: 不適合
git 未入門: + 30分鐘
docker未入門: +2 小時
linux未入門: +2 小時
nginx未入門: +1小時
對于一個.net core已入門的新手, 最多6個小時可以完成這個實驗, 對于上述知識都有儲備的人,20分鐘基本就可以完成(時間取決于你的網(wǎng)速).
前置準備
一臺Linux服務(wù)器, 能連接外網(wǎng)(需要在線安裝git, docker, 以及下載dotnet docker相關(guān)鏡像), 下面的命令以debian 8為例, ubuntu與debian 命令相同, centos需要吧apt-get 替換為yum
1. 部署git
這樣一臺git服務(wù)器就好了, 如果有遠程的github或者oscgit可以用,那可以省略這一步
apt-get install git
useradd git
passwd git 設(shè)置git賬戶的密碼
2. 準備代碼上傳
su git
mkdir samplecode
cd samplecode
git init
創(chuàng)建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 內(nèi)置web服務(wù)器外層再加一層反代), 加了反代之后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; } }
浙公網(wǎng)安備 33010602011771號