代码改变世界

阿里云部署 (三) 部署net5

2021-04-13 23:22  qgbo  阅读(239)  评论(0编辑  收藏  举报

上篇用docker + nginx 部署静态站点

这次部署.net5

1. 把本地的 net5项目发布,拷到linux 服务器上

2.新建Dockerfile: 注意 第一行不要 跟 As base 之类的

FROM mcr.microsoft.com/dotnet/aspnet:5.0
WORKDIR /app
EXPOSE 80
EXPOSE 443

WORKDIR /app
ENTRYPOINT ["dotnet", "Backend.dll","--urls","http://*:80;","debug"]

docker build -t net5 .

这里带上debug 参数,是给应用一个标志,说这是要使用https 了,要用证书了。program 的main 方法要做如下添加。

if (Program.args.Contains("debug"))
                      {
                           webBuilder.UseKestrel(ConfigHttpsRyr());
                           webBuilder.UseUrls(Program.args);
                      }
-------------------------------------------------------------
 private static Action<KestrelServerOptions> ConfigHttpsRyr()
        {
            return x =>
            {
            </span><span style="color: #0000ff;">var</span> pfxFile = <span style="color: #800000;">"</span><span style="color: #800000;">5203942321_app.ryrkj.com.pfx</span><span style="color: #800000;">"</span><span style="color: #000000;">;
            Log.Logger.Information(</span><span style="color: #800000;">"</span><span style="color: #800000;">pfx:</span><span style="color: #800000;">"</span><span style="color: #000000;">, pfxFile);
            </span><span style="color: #008000;">//</span><span style="color: #008000;">password 填写申请的密钥</span>
            <span style="color: #0000ff;">var</span> certificate = <span style="color: #0000ff;">new</span> X509Certificate2(pfxFile, <span style="color: #800000;">"</span><span style="color: #800000;">.......</span><span style="color: #800000;">"</span><span style="color: #000000;">);
            x.ConfigureHttpsDefaults(c </span>=&gt; c.ServerCertificate =<span style="color: #000000;"> certificate);
           
        };
    }</span></pre>

 

 

3. 在linux 上执行: publish 是第一步发布的文件夹名

docker run  -it  --name net5 -p 5001:443 -v /publish:/app -d --net mynet net5

现在可以访问站点了。

4.如果有错误服务器可能这个容器会停止。 docker logs net5 查看原因。

5.如果是数据库链接字符串有问题,去app..product.setting.json 中修改:

"BackendContext": "Server=mysqlserver;Database=AAA;User ID=sa;Password=xxxx;Trusted_Connection=false;"

然后新建SQL server 容器:

docker run -d -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=xxxx' -p 1433:1433 -d --name mysqlserver --net mynet mcr.microsoft.com/mssql/server:2017-latest

6. docker start net5  看看起来了吧。

7.  更新程序之后,需要在linux 端     docker  restart net

8.总结脚本:

docker network ls

docker network create --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet

docker run --name mynginx -p 80:80 -p 443:443 -d --net mynet -v /nginxdata:/usr/share/nginx -v /ngnixconf:/etc/nginx/conf.d2/ nginx

docker run -d -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=xxxx' -p 1433:1433 -d --name mysqlserver --net mynet mcr.microsoft.com/mssql/server:2017-latest

cat << EOF > Dockerfile
> FROM mcr.microsoft.com/dotnet/aspnet:5.0
> WORKDIR /app
> EXPOSE 80
> EXPOSE 443
>
> WORKDIR /app
> ENTRYPOINT ["dotnet", "Backend.dll","--urls","http://*:80;https://app.ryrkj.com","debug"]
> EOF

docker build net5 .
docker run -it --name net5 -p 5001:443 -v /publish:/app -d --net mynet net5

docker exec  net5  cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime