基于VS2017的Docker Support体检ASP.NET Core站点的Docker部署
最近在学习如何用 Docker 部署生产环境中的 ASP.NET Core 站点,作为一个 Docer 新手,从何处下手更容易入门呢?一开始就手写 Docker 配置文件(Docfile, docker-compose.yml)容易让人产生挫败感,想到 Visual Studio 2017 对 Docker 的支持(Docker Support),也许借助它自动生成Docker配置文件、初步体验一下 Docker 部署是一个入门捷径,遂据此想法尝试了一下,感觉不错。
1. 启用 VS2017 的 Docker Support 有 2 种途径:
1.1 在创建 ASP.NET Core 项目时选中“Enable Docker Support”

1.2 或者在已有的项目(注:不是解决方案)中添加 Docker Support

2. 添加 Docker Support 之后,VS2017 会生产 4 个 Docker 配置文件和 1 个 .dcproj 文件。
2.1 Dockfile
FROM microsoft/aspnetcore:2.0
ARG source
WORKDIR /app
EXPOSE 80
COPY ${source:-obj/Docker/publish} .
ENTRYPOINT ["dotnet", "aspnetcore2-20170530.dll"]
2.2 docker-compose.ci.build.yml
version: '3' services:
ci-build:
image: microsoft/aspnetcore-build:1.0-1.1
volumes:
- .:/src
working_dir: /src
command: /bin/bash -c "dotnet restore ./aspnetcore2-20170530.sln && dotnet publish ./aspnetcore2-20170530.sln -c Release -o ./obj/Docker/publish"
(注:由于这里时 ASP.NET Core 2.0 的项目,需要把上面的 microsoft/aspnetcore-build:1.0-1.1 改为 microsoft/aspnetcore-build:2.0)
2.3 docker-compose.yml
version: '3' services:
aspnetcore2-20170530:
image: aspnetcore2-20170530
build:
context: ./aspnetcore2-20170530
dockerfile: Dockerfile
2.4 docker-compose.override.yml
version: '3' services:
aspnetcore2-20170530:
environment:
- ASPNETCORE_ENVIRONMENT=Development
ports:
- "80"
(注:为了可以在容器外部访问站点,需要修改上面 ports 部分配置,这里将 "80" 改为 "8008:80" )
3. 在另外 1 台 Linux 服务器上用 Docker 分别创建 2 个容器发布(dotnet publish)与运行 ASP.NET Core 站点
3.1 在 Linux 机器上签出 ASP.NET Core 项目(已安装 Docker)
3.2 根据 docker-compose.ci.build.yml 配置文件基于 microsoft/aspnetcore-build:2.0 image 创建用于发布 ASP.NET Core 站点的容器
# docker-compose --file docker-compose.ci.build.yml up
Pulling ci-build (microsoft/aspnetcore-build:2.0)...
2.0: Pulling from microsoft/aspnetcore-build
...
Status: Downloaded newer image for microsoft/aspnetcore-build:2.0
...
Starting src_ci-build_1 ...
Starting src_ci-build_1 ... done
Attaching to src_ci-build_1
...
src_ci-build_1 exited with code 0
3.3 根据 docker-compose.yml + docker-compose.override.yml 基于 microsoft/aspnetcore:2.0 image(来自Dockerfile的配置)创建用于运行 ASP.NET Core 站点的容器
# docker-compose up
Starting src_cnblogs.cache.webapi_1 ...
Starting src_cnblogs.cache.webapi_1 ... done
Attaching to src_cnblogs.cache.webapi_1
cnblogs.cache.webapi_1 | Hosting environment: Development
cnblogs.cache.webapi_1 | Content root path: /app
cnblogs.cache.webapi_1 | Now listening on: http://[::]:80
cnblogs.cache.webapi_1 | Application started. Press Ctrl+C to shut down.
这时通过这台 Linux 服务器的 8008 端口就可以访问运行在 Docker 容器中的 ASP.NET Core 站点。
这样简单快速地体验一下用 Docker 部署 ASP.NET Core 站点的确是一个不错的入门途径。
基于VS2017的Docker Support体检ASP.NET Core站点的Docker部署的更多相关文章
- 【原创】 Docker 中 运行 ASP.NET Core 站点
一. 建立 .NetCore 项目 a.新建项目 b.选择项目类型 c.添加控制器 d.添加视图 e.修改默认请求 f.发布 二. 准备 CentOS 环境 a.准备虚拟机 b.安装 docker ...
- docker中运行ASP.NET Core Web API
在docker中运行ASP.NET Core Web API应用程序 本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过 ...
- 从头认识一下docker-附带asp.net core程序的docker化部署
从头认识一下docker-附带asp.net core程序的docker化部署 简介 在计算机技术日新月异的今天, Docker 在国内发展的如火如荼,特别是在一线互联网公司, Docker 的使用是 ...
- ASP.NET Core 网站在Docker中运行
Docker作为新一代的虚拟化方式,未来肯定会得到广泛的应用,传统虚拟机的部署方式要保证开发环境.测试环境.UAT环境.生产环境的依赖一致性,需要大量的运维人力,使用Docker我们可以实现一次部署, ...
- windows/Linux下设置ASP.Net Core开发环境并部署应用
10分钟学会在windows/Linux下设置ASP.Net Core开发环境并部署应用 创建和开发ASP.NET Core应用可以有二种方式:最简单的方式是通过Visual Studio 2017 ...
- 在Linux上以服务的方式运行ASP.NET Core站点
更新:用supervisor是更好的解决方法,详见 Linux下为 dotnet 创建守护进程 要在生成环境下在Linux服务器上跑ASP.NET Core站点,首先要解决的问题是以服务的方式运行AS ...
- Cenos7 部署asp.net core站点
系统版本 rpm -q centos-release --- centos-release--5.1804.el7.centos.x86_64 安装libicu yum install libunwi ...
- .NET跨平台之旅:在生产环境中上线第一个运行于Linux上的ASP.NET Core站点
2016年7月10日,我们在生产环境中上线了第一个运行于Linux上的ASP.NET Core站点,这是一个简单的提供后端服务的ASP.NET Core Web API站点. 项目是在Windows上 ...
- .NET跨平台之旅:将QPS 100左右的ASP.NET Core站点部署到Linux服务器上
今天下午我们将生产环境中一个单台服务器 QPS(每秒请求数)在100左右的 ASP.NET Core 站点部署到了 Linux 服务器上,这是我们解决了在 .NET Core 上使用 EnyimMem ...
随机推荐
- MySQL 各级别事务的实现机制
MySQL 各级别事务的实现机制在处理cnctp项目已合包裹状态同步的问题时,发现读包裹状态和对包裹状态的更新不在一个事务内,我提出是否会因为消息并发导致状态一致性问题.在和同事讨论的过程中,我们开始 ...
- Effective Java 第三版——52. 明智而审慎地使用重载
Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所 ...
- 透彻理解Spring事务设计思想之手写实现
前言 事务,是描述一组操作的抽象,比如对数据库的一组操作,要么全部成功,要么全部失败.事务具有4个特性:Atomicity(原子性),Consistency(一致性),Isolation(隔离性),D ...
- Summary Checklist for Run-Time Kubernetes Security
Here is a convenient checklist summary of the security protections to review for securing Kubernetes ...
- C++11模版元编程的应用
1.概述 关于C++11模板元的基本用法和常用技巧,我在程序员2015年2月B<C++11模版元编程>一文(后称前文)中已经做了详细地介绍,那么C++11模版元编程用来解决什么实际问题呢, ...
- 《Essential C++》读书笔记 之 C++编程基础
<Essential C++>读书笔记 之 C++编程基础 2014-07-03 1.1 如何撰写C++程序 头文件 命名空间 1.2 对象的定义与初始化 1.3 撰写表达式 运算符的优先 ...
- 【九天教您南方cass 9.1】 05 打印出图
同学们大家好,欢迎收看由老王测量上班记出品的cass9.1视频课程 我是本节课主讲老师九天. 我们讲课的教程附件也是共享的,请注意索取测量空间中. [点击索取cass教程]5元立得 (给客服说暗号:“ ...
- 在win10企业版x64下使用curl命令
一.curl命令介绍 curl是利用URL语法在命令行方式下工作的开源文件传输工具.它被广泛应用在Unix.多种Linux发行版中,并且有DOS和Win32.Win64下的移植版本. 详情查看百度百科 ...
- git配置用户名邮箱,全局配置/单仓库配置
在项目根目录下进行单仓库配置(作用域只在本仓库下): git config user.name "gitlab's Name" git config user.email &quo ...
- Java知多少(34)final关键字:阻止继承和多态
在 Java 中,声明类.变量和方法时,可使用关键字 final 来修饰.final 所修饰的数据具有“终态”的特征,表示“最终的”意思.具体规定如下: final 修饰的类不能被继承. final ...