参照下面,搭建好开发环境、Docker及配置好Docker加速器

http://www.cnblogs.com/windchen/p/6257846.html

参照下面,将windows共享目录挂载到Ubuntu虚拟机

http://www.cnblogs.com/windchen/p/6236299.html

假设:D:\projects --> /mnt/projects

参照下面,在Ubuntu上安装好docker compose

http://www.cnblogs.com/windchen/p/6239494.html

下载asp.net core运行镜像和构建发布镜像

docker pull microsoft/aspnetcore
docker pull microsoft/aspnetcore-build
docker pull nginx

建立asp.net core网站

打开windows命令行工具,建立目录

mkdir D:\projects\first-web\src
cd D:\projects\first-web\src
dotnet new -t web

修改网站Url

打开Program.cs文件,添加红色字部分

 public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseUrls("http://*:5000")
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build(); host.Run();
}

利用docker compose建立build、publish环境

登入Ubuntu,进入Project目录,建立docker-compose.yml文件

cd /mnt/projects/first-web
mkdir -p docker/build
vi docker/build/docker-compose.yml

输入内容:

version: ""

services:
build-env:
build: ../../src
container_name: build-env

建立script:

cd /mnt/projects/first-web
mkdir scripts
vi scripts/build-publish.sh
chmod +x scripts/build-publish.sh

输入如下内容:

basepath=$(cd `dirname $`; pwd)
echo "goto build folder"
cd $basepath/../docker/build
echo "run build"
docker-compose build
echo "run down"
docker-compose down
echo "run up"
docker-compose up
echo "copy published files"
docker cp build-env:/publish/bin $basepath/../

建立生成build镜像的Dockerfile

cd /mnt/projects/first-web
vi src/Dockerfile

输入内容:

FROM microsoft/aspnetcore-build
WORKDIR /build COPY project.json .
RUN dotnet restore COPY . .
RUN dotnet publish -o /publish/bin/ -c Release

现在执行build-publish.sh就可以将code build并发布到Project的bin目录了

cd /mnt/projects/first-web
./scripts/build-publish.sh
ls bin/

利用docker compose建立proxy和web环境

建立生成web环境的Dockerfile

cd /mnt/projects/first-web
vi bin/Dockerfile

输入内容:

FROM microsoft/aspnetcore

WORKDIR /web

COPY . .

建立生成proxy镜像的Dockerfile

cd /mnt/projects/first-web
mkdir -p docker/nginx
vi docker/nginx/Dockerfile

输入如下内容:

FROM nginx

COPY my.nginx.conf /etc/nginx/conf.d/default.conf

EXPOSE 

在上面相同目录建立my.nginx.conf,输入

server {
listen ; location /{
proxy_pass http://web:5000;
}
}

建立启动container的compose文件

cd /mnt/projects/first-web
vi docker/docker-compose.yml

输入内容:

version: ""

services:
web:
build: ../bin
container_name: web
entrypoint: "dotnet build.dll"
proxy:
build: ./nginx
container_name: proxy
ports:
- :
links:
- web
tty: true

建立启动nginx和web的shell脚本

cd /mnt/projects/first-web
vi scripts/start-web.sh
chmod +x scripts/start-web.sh

输入如下内容:

basepath=$(cd `dirname $`; pwd)
echo "goto build folder"
cd $basepath/../docker/
echo "run build"
docker-compose build
echo "run down"
docker-compose down
echo "run up"
docker-compose up -d

至此准备工作已经完成,可以启动proxy跟web了

cd /mnt/projects/first-web
./start-web.sh

查看网站是否正常运行:

curl http://localhost

windows下的asp.net core开发及docker下的发布的更多相关文章

  1. windows/Linux下设置ASP.Net Core开发环境并部署应用

    10分钟学会在windows/Linux下设置ASP.Net Core开发环境并部署应用 创建和开发ASP.NET Core应用可以有二种方式:最简单的方式是通过Visual Studio 2017 ...

  2. 10分钟学会在windows/Linux下设置ASP.Net Core开发环境并部署应用

    创建和开发ASP.NET Core应用可以有二种方式:最简单的方式是通过Visual Studio 2017 来创建,其优点是简单方便,但需要安装最新版本Visual Studio 2017 prev ...

  3. Windows下构建ASP.NET Core+Code First+Docker

    背景介绍 本文将会示范如何在Windows系统下基于ASP.NET Core构建跨平台服务,并通过Docker容器运行发布. 首先说一下为什么选择这一套组合: 我本人和我们Code4Thought团队 ...

  4. 在Ubuntu下搭建ASP.NET 5开发环境

    在Ubuntu下搭建ASP.NET 5开发环境 0x00 写在前面的废话 年底这段时间实在太忙了,各种事情都凑在这个时候,没时间去学习自己感兴趣的东西,所以博客也好就没写了.最近工作上有个小功能要做成 ...

  5. 在Mac下创建ASP.NET Core Web API

    在Mac下创建ASP.NET Core Web API 这系列文章是参考了.NET Core文档和源码,可能有人要问,直接看官方的英文文档不就可以了吗,为什么还要写这些文章呢? 原因如下: 官方文档涉 ...

  6. ASP.NET Core开发-后台任务利器Hangfire使用

    ASP.NET Core开发系列之后台任务利器Hangfire 使用. Hangfire 是一款强大的.NET开源后台任务利器,无需Windows服务/任务计划程序. 可以使用于ASP.NET 应用也 ...

  7. ASP.Net Core开发(踩坑)指南

    ASP.NET与ASP.NET Core很类似,但它们之间存在一些细微区别以及ASP.NET Core中新增特性的使用方法,在此之前也写过一篇简单的对比文章ASP.NET MVC应用迁移到ASP.NE ...

  8. C# -- HttpWebRequest 和 HttpWebResponse 的使用 C#编写扫雷游戏 使用IIS调试ASP.NET网站程序 WCF入门教程 ASP.Net Core开发(踩坑)指南 ASP.Net Core Razor+AdminLTE 小试牛刀 webservice创建、部署和调用 .net接收post请求并把数据转为字典格式

    C# -- HttpWebRequest 和 HttpWebResponse 的使用 C# -- HttpWebRequest 和 HttpWebResponse 的使用 结合使用HttpWebReq ...

  9. ASP.NET Core Windows 环境配置 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core Windows 环境配置 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Windows 环境配置 ASP.NET Core ...

随机推荐

  1. Synplify FPGA 逻辑综合

    作为 Synopsys FPGA 设计解决方案的一部分,Synplify FPGA 综合软件是实现高性能.高性价比的 FPGA 设计的行业标准. 其独特的行为提取综合技术 (Behavior Extr ...

  2. MYSQL 二次筛选,统计,最大值,最小值,分组,靠拢

    HAVING 筛选后再 筛选 SELECT CLASS,SUM(TOTAL_SCORES) FROM student_score GROUP BY CLASS HAVING SUM(TOTAL_SCO ...

  3. (转)Spring如何装配各种集合类型的属性

    http://blog.csdn.net/yerenyuan_pku/article/details/52858499 在前面我们已经会注入基本类型对象和其他bean,现在我们就来学习如何注入各种集合 ...

  4. Android(java)学习笔记160:开发一个多界面的应用程序之清单文件

    清单文件的重要参数:     <intent-filter>             代表的应用程序的入口界面           <action android:name=&quo ...

  5. 使用python编写的简单远程管理软件

    因为用户可以选择是否同意被控制,所以并不算是木马. 使用python3.7,spyder,在windows 10 开发. client为控制端,server为被控端. 参考 mygithub http ...

  6. JavaEE-05 分页与文件上传

    学习要点 新闻分页显示数据 新闻图片上传 JSP分页显示数据 分页 数据信息较多的的时候一般采用列表显示,方便展示信息: 数据量较大的时候一般采用列表加分页的方式显示,便于阅读. 分页方式:集合或者s ...

  7. POJ-1200-Crazy Search(字符串Hash)

    Crazy Search Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 33142 Accepted: 9079 Descrip ...

  8. Mybatis 头信息

    在使用IDEA开发中,如果不使用Mybatis-Generator时,那么就需要手写Mapper文件,而在创建xml文件时无法直接创建带有mybatis头信息的mapper文件,这里来记录一下Myba ...

  9. MongoDB中导入数据命令的使用(mongoimport)

    MongoDB中导入数据命令的使用(mongoimport) 制作人:全心全意 语法: mongoimport <options> <file> 介绍: 该命令可以将CSV,T ...

  10. 条款33:避免遮掩继承而来的名称(Avoiding hiding inherited names)

    NOTE: 1.derived classes 内的名称会遮掩base classes内的名称.在public继承下从来没有人希望如此. 2.为了让被遮掩的名称再见天日,可使用using 声明方式或转 ...