前一段时间由于项目需要 .net core 在docker下的部署,途中也遇到很多坑,看了各同行的博客觉得多多少少还是有些问题,原本不想写此篇文章,由于好友最近公司也需要部署,硬是要求,于是花了些时间写了下来,并实现docker制作镜像的过程中先编译.net core 项目包然后形成镜像。

(一)   Docker for Windows10的安装

1.         在安装docker之前首先安装windows10组件Hyper-V,安装步骤如下:

2.         重启计算机按F2或F10进入Bios界面

依次选择Configuratio>Intel Virtual Technology > Enabled;

退出保存

3.         下载docker for windows10 并安装docker

安装成功后,运行cmd命令,按住win键+r,输入cmd运行

如下图表示docker安装成功

创建.net core api项目比如叫server1,创建时勾选如下图,也可以在现有项目中添加选择docker支持:

Startup.cs代码:

public class Startup

{

public Startup(IConfiguration configuration)

{

Configuration = configuration;

}

public IConfiguration Configuration { get; }

// This method gets called by the runtime. Use this method to add services to the container.

public void ConfigureServices(IServiceCollection services)

{

services.AddMvc();

}

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.

public void Configure(IApplicationBuilder app, IHostingEnvironment env)

{

if (env.IsDevelopment())

{

app.UseDeveloperExceptionPage();

}

app.UseMvc();

}

}

Program.cs代码:

public class Program

{

public static void Main(string[] args)

{

var host = new WebHostBuilder()

.UseKestrel()

.UseUrls("http://*:5000")

.UseContentRoot(Directory.GetCurrentDirectory())

.UseIISIntegration()

.UseStartup<Startup>()

//.UseApplicationInsights()

.Build();

host.Run();

}

public static IWebHost BuildWebHost(string[] args) =>

WebHost.CreateDefaultBuilder(args)

.UseStartup<Startup>()

.Build();

}

添加ServerController 代码如下:

[Route("/")]

public class ServerController : Controller

{

[HttpGet]

public string Get()

{

return "我是应用服务1";

}

}

然后在项目目录下能发现文件Dockerfile

系统默认代码如下:

FROM microsoft/aspnetcore:2.0 AS base

WORKDIR /app

EXPOSE 80

FROM microsoft/aspnetcore-build:2.0 AS build

WORKDIR /src

COPY server1/ server1.csproj server1/

RUN dotnet restore server1/ server1.csproj

COPY . .

WORKDIR /src/ server1

RUN dotnet build server1.csproj -c Release -o /app

FROM build AS publish

RUN dotnet publish server1.csproj -c Release -o /app

FROM base AS final

WORKDIR /app

COPY --from=publish /app .

ENTRYPOINT ["dotnet", " server1.dll"]

以上默认代码有巨坑,之前运用网上dockerfile代码采用的是先手工编译到bin目录下,然后在bin目录直接做成镜像运行,不知什么原因一直浏览器无法访问,我在dockerfile里面配置成打包镜像时并且编译,成功运行,经过修改排查后改成如下:

# 声明使用的基础镜像

FROM microsoft/dotnet:2.0.7-sdk-2.1.200

# 将本地dotnet core 应用拷贝到 容器 src/ 目录下

COPY . src/

RUN dotnet publish src/Server1.csproj -c Release -o /coreImage

# 设置工作目录

WORKDIR /coreImage

# 设置导出端口

EXPOSE 5000/tcp

# 指定应用入口点

ENTRYPOINT dotnet Server1.dll

运行cmd命令,按住win键+r,输入cmd运行,

将当前目录切换到.csproj所在的项目目录

输入命令docker build -t myserver .,命令含义是将当前目录的core项目编译成名子为myserver镜像,注意myserver后面必须有个"."号,必须空一格。不然编译不过,编译成镜像成功后如图所示:

然后运行 docker run -it -p 6001:5000 myserver即可如图所示表示运行成功:

看到这句话并且之前没有错误信息,表示容器内镜像运行成功

输入网址:localhost:6001看到如下效果:

本文为原创,如需转载,请带上连接

.net core in Docker 部署方案(随笔)的更多相关文章

  1. ASP.NET Core开发-Docker部署运行

    ASP.NET Core开发Docker部署,.NET Core支持Docker 部署运行.我们将ASP.NET Core 部署在Docker 上运行. 大家可能都见识过Docker ,今天我们就详细 ...

  2. ASP.NET Core开发Docker部署

    ASP.NET Core开发Docker部署,.NET Core支持Docker 部署运行.我们将ASP.NET Core 部署在Docker 上运行. 大家可能都见识过Docker ,今天我们就详细 ...

  3. 记录.NET Core通过Docker部署到Linux

    1.现在CentOS安装Docker环境(参考地址:https://docs.docker-cn.com/engine/installation/linux/docker-ce/centos/) 我这 ...

  4. OpenStack Mitaka HA部署方案(随笔)

    [Toc] https://github.com/wanstack/AutoMitaka # 亲情奉献安装openstack HA脚本 使用python + shell,完成了基本的核心功能(纯二层的 ...

  5. Asp.Net Core 程序部署到Linux(centos)生产环境(二):docker部署

    运行环境 照例,先亮环境:软件的话我这里假设你已经批准好了.net core 运行环境,未配置可以看我的这篇[linux(centos)搭建.net core 运行环境] 腾讯云 centos:7.2 ...

  6. Asp.Net Core 使用Docker进行容器化部署(一)

    前几篇文章介绍了Liunx下的环境搭建,今天来分享一下.Net Core在Liunx上的部署. 我采用的方案是使用Dokcer作为运行虚拟机,Nginx作为Http服务器来进行反向代理,你可以理解为D ...

  7. NET Core Docker部署

    NET Core Docker部署 前言 在前面文章中,介绍了 ASP.NET Core在 macOS,Linux 上基于Nginx和Jexus的发布和部署,本篇文章主要是如何在Docker容器中运行 ...

  8. 基于VS2017的Docker Support体检ASP.NET Core站点的Docker部署

    最近在学习如何用 Docker 部署生产环境中的 ASP.NET Core 站点,作为一个 Docer 新手,从何处下手更容易入门呢?一开始就手写 Docker 配置文件(Docfile, docke ...

  9. Docker 部署Dotnet Core MVC项目

    原文:Docker 部署Dotnet Core MVC项目 1.dotnet core创建项目 dotnet new mvc -o myweb cd myweb 然后就是业务代码的编辑,增删改查乱七八 ...

随机推荐

  1. 【转】Jmeter安装成功后的目录介绍

    1.bin目录 Jmeter.bat  打开Jmeter主界面 Jmeter使用的日志文件名称被定义到Jmeter.properties中,默认在Jmeter.log可查看日志 2.dosc和prin ...

  2. java图形用户界面添加背景颜色不成功的解决方案

    总结:背景颜色不成功,那么使用这个方法试试.getContentpane(); package clientFrame; import java.awt.Color; import java.awt. ...

  3. Java-Maven-Runoob:Maven NetBeans

    ylbtech-Java-Maven-Runoob:Maven NetBeans 1.返回顶部 1. Maven NetBeans NetBeans 6.7 及更新的版本已经内置了 Maven.对于以 ...

  4. python开发模块基础:re正则

    一,re模块的用法 #findall #直接返回一个列表 #正常的正则表达式 #但是只会把分组里的显示出来#search #返回一个对象 .group()#match #返回一个对象 .group() ...

  5. N卡控制面板把physx设置为cpu

    一般笔记本官方配置独显都会强于核显,若是独显不够强这里教你一个小技巧来缓解独显的压力:N卡控制面板把physx设置为cpu,可以试试看.对于不强大的独显有点效果.

  6. Valid timeZone Values(转)

    https://www.vmware.com/support/developer/vc-sdk/visdk400pubs/ReferenceGuide/timezone.html Valid time ...

  7. MySQL复制错误 The slave I/O thread stopsbecause master and slave have equal MySQL server UUIDs; these UUIDs must bedifferent for replication to work 解析

    在搭建Mysql主从复制时候,在执行完相关操作以后,通过命令查看是否主从复制成功的时候 show slave status\G; 在"Slave_SQL_Running_State" ...

  8. asp.net js 存取cookie

    asp.net //传进来的 public BaseController(BaseHttpHandler handler, HttpContext context) // { //根据地址设置cook ...

  9. Spring MVC的配置

    一.添加依赖 <dependency> <groupId>org.springframework</groupId> <artifactId>sprin ...

  10. Lucene Payload 的研究与应用

    Payload (元数据) 诞生于 Lucene 的2.2 版本,它是在 Lucene 2.1 索引文件格式的基础上扩展而来,提供了一种可以灵活配置的高级索引技术,在某些特定应用场景下能优化基于 Lu ...