摘要: 描述java 的 Spring是一个很火的框架,Spring boot 这个也不用说了,Docker 近年也很火热, 本文就介绍下我在 Spring boot + Docker的集成一些经验 :) 其实官网已经有一个手册介绍了这里可能会用到的东西JDK 1.8 或者更高Maven 3.0+ 或者是 ... 阅读全文
posted @ 2015-12-21 08:59 BeyondBlog 阅读(4337) 评论(0) 推荐(2) 编辑
摘要: 用Go语言已经有一段时间了,总结一下如何用GDB来调试它!ps:网上有很多文章都有描述,但是都不是很全面,这里将那些方法汇总一下GDB简介GDB是GNU开源组织发布的⼀一个强⼤大的UNIX下的程序调试⼯工具。或许,各位⽐比较喜欢那种图形界⾯面⽅方式的,像VC、BCB等IDE的调试,但如果你是在UNI... 阅读全文
posted @ 2015-04-13 20:23 BeyondBlog 阅读(8419) 评论(2) 推荐(3) 编辑

本文描述下 .net core 在 docker 里面的玩法

首先按照官方文档先 拉取镜像

docker pull microsoft/dotnet:latest

 

然后就有了 dotnet 这个运行时了,这里以一个 web 项目举例子 先创建一个 web 类型的 project

dotnet new -t web

如果本地没有 dotnet 运行时可以docker run 一个

docker run --rm -it -v /home/hello_dotnet/:/home/hello_dotnet/  microsoft/dotnet:latest

上面这个命令的意思是 让 docker 运行(docker run)一个dotnet:latest的镜像(microsoft/dotnet:latest) 并且把本地的/home/hello_dotnet卷路径挂载到容器的/home/hello_dotnet 下面(-v /home/hello_dotnet/:/home/hello_dotnet/)然后提供交互式模式能够输入输出(-it)退出之后自动删除容器(--rm)

然后进入容器生成类似这样

 

[root@172-16-0-20 home]# docker run --rm -it -v /home/hello_dotnet/:/home/hello_dotnet/  microsoft/dotnet:latest

root@193fb1cf32a6:/# cd /home/hello_dotnet/

root@193fb1cf32a6:/home/hello_dotnet# dotnet new -t web

Created new C# project in /home/hello_dotnet.

root@193fb1cf32a6:/home/hello_dotnet# ls

Controllers  Data  Models  Program.cs  README.md  Services  Startup.cs  Views  appsettings.json  bower.json  gulpfile.js  package.json  project.json  web.config  wwwroot

root@193fb1cf32a6:/home/hello_dotnet#

 

然后更新下包依赖

dotnet restore

直接运行

dotnet run

修改一下默认的监听端口默认是 localhost:5000 不好做代理,把它修改成 0.0.0.0

 

using System;

using System.Collections.Generic;

using System.IO;

using System.Linq;

using System.Threading.Tasks;

using Microsoft.AspNetCore.Hosting;

 

namespace WebApplication

{

    public class Program

    {

        public static void Main(string[] args)

        {

            var host = new WebHostBuilder()

                .UseUrls("http://0.0.0.0:5000") //添加这一行

                .UseKestrel()

                .UseContentRoot(Directory.GetCurrentDirectory())

                .UseIISIntegration()

                .UseStartup<Startup>()

                .Build();

 

            host.Run();

        }

    }

}

 

ok 没啥问题 publish 一下

root@193fb1cf32a6:/home/hello_dotnet# dotnet publish

Publishing hello_dotnet for .NETCoreApp,Version=v1.0

No executable found matching command "npm"

 

额,并不能够 publish 提示找不到 npm, npm 这个不是 node 的包依赖工具么。。 经过查看发现这个生成的 web 依赖了 gulp 所以很蛋疼 默认的容器只有运行时环境(可能主要是为了精简镜像)需要自己在安装 node

这里可以在容器里面把 node 装好或者去其他机器上 publish

apt-get update & apt-get install npm

并且安装完 npm 还不够 还需要 安装 bower gulp

No executable found matching command "bower"

No executable found matching command "gulp"

npm install bower -g

npm install gulp -g

ok 结束了...

Project hello_dotnet (.NETCoreApp,Version=v1.0) was previously compiled. Skipping compilation.

Configuring the following project for use with IIS: '/home/hello_dotnet/bin/Debug/netcoreapp1.0/publish'

Updating web.config at '/home/hello_dotnet/bin/Debug/netcoreapp1.0/publish/web.config'

Configuring project completed successfully

publish: Published to /home/hello_dotnet/bin/Debug/netcoreapp1.0/publish

Published 1/1 projects successfully

退出容器回到服务器上

root@193fb1cf32a6:/home/hello_dotnet/bin/Debug/netcoreapp1.0# exit

exit

[root@172-16-0-20 home]# ls

data  docker-compose  hello_dotnet  java  xiaoming  xiaoqiu

[root@172-16-0-20 home]# cd hello_dotnet/

[root@172-16-0-20 hello_dotnet]# ls

appsettings.json  bin  bower.json  Controllers  Data  gulpfile.js  Models  node_modules  obj  package.json  Program.cs  project.json  project.lock.json  README.md  Services  Startup.cs  Views  web.config  wwwroot

 

代码都已经创建好了,现在只要找个运行时 dotnet hello_dotnet.dll 就可以启动 web 了

打包一个镜像 写个 dockerfile 就好

先新建个工作目录整理下结构

[root@172-16-0-20 dotnet]# tree -L 2

.

├── Dockerfile

└── hello_dotnet

    ├── appsettings.json

    ├── bin

    ├── bower.json

    ├── Controllers

    ├── Data

    ├── gulpfile.js

    ├── Models

    ├── node_modules

    ├── obj

    ├── package.json

    ├── Program.cs

    ├── project.json

    ├── project.lock.json

    ├── README.md

    ├── Services

    ├── Startup.cs

    ├── Views

    ├── web.config

    └── wwwroot

 

[root@172-16-0-20 dotnet]# docker build -t "hello_dotnet:1.0" ./

 

[root@172-16-0-20 dotnet]# docker build -t "hello_dotnet:1.0" ./

Sending build context to Docker daemon 53.04 MB

Step 1 : FROM microsoft/dotnet:latest

 ---> 4028809f66a4

Step 2 : COPY hello_dotnet /home/www

 ---> 600558b4e65d

Removing intermediate container 0c05fc314674

Step 3 : WORKDIR /home/www

 ---> Running in b5b029517595

 ---> c9f05e277de9

Removing intermediate container b5b029517595

Step 4 : EXPOSE 8080

 ---> Running in 2a00bea9393c

 ---> b921fe0482f0

Removing intermediate container 2a00bea9393c

Step 5 : CMD dotnet hello_dotnet.dll

 ---> Running in f770b366be81

 ---> 11027359f344

Removing intermediate container f770b366be81

Successfully built 11027359f344

运行

[root@172-16-0-20 dotnet]# docker run  --rm -it -p 8888:5000 hello_dotnet:1.0

info: Microsoft.Extensions.DependencyInjection.DataProtectionServices[0]

      User profile is available. Using '/root/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest.

Hosting environment: Production

Content root path: /home/www

Now listening on: http://0.0.0.0:5000

Application started. Press Ctrl+C to shut down.

 

浏览器访问 http://172.16.0.20:8888

ok 一切正常

 

当然也可以用守护进程的模式运行

docker run -d -p 8888:5000 hello_dotnet:1.0

参考文档

[0] https://dotnet.github.io

[1] https://docs.docker.com/engine/reference/builder

[2] http://stackoverflow.com/questions/34212765/how-do-i-get-the-kestrel-web-server-to-listen-to-non-localhost-requests

posted @ 2016-07-05 09:44 BeyondBlog 阅读(1544) 评论(1) 推荐(0) 编辑
摘要: HTML5 拥有许多引人注目的新特性,如 Canvas、本地存储、多媒体编程接口、WebSocket 等等。虽然现在大家把它捧的很火的样子,但是个人认为它还需要其他平台的支持才能真正的"火起来"。原来做web通信的时候 基于ajax的“轮询” “长轮询”等其他的方式 网上有很详细的解释轮询:这是最早的一种实现实时 Web 应用的方案。客户端以一定的时间间隔向服务端发出请求,以频繁请求的方式来保持客户端和服务器端的同步。这种同步方案的最大问题是,当客户端以固定频率向服务器发起请求的时候,服务器端的数据可能并没有更新,这样会带来很多无谓的网络传输,所以这是一种非常低效的实时方案 阅读全文
posted @ 2013-04-11 23:39 BeyondBlog 阅读(19188) 评论(26) 推荐(20) 编辑
摘要: 这个效果类似于Windows Phone自带的那个相册 用汉字来形容就是“一张图片在某个区域内来回移动”。这个效果在很多地方看过 例如“网易云阅读”“鲜果联播” 图片不再是那种静态的了,非常cool。coding4fun 上有源代码大致的原理就是一个Clip+一个位移动画。想一想就是一个Panel容器里面嵌套一个图片然后用位移动画移动它既可,于是有了如下代码 <Canvas Height="375" Width="500"> <Image x:Name="dream" Stretch="UniformToF 阅读全文
posted @ 2013-03-30 18:37 BeyondBlog 阅读(1150) 评论(2) 推荐(1) 编辑
摘要: Windows 推送通知服务 (WNS) 使第三方开发人员可从自己的云服务发送 Toast、磁贴、锁屏提醒和原始更新。这提供了一种高效而可靠地向用户提供新更新的机制。相对于Windows Phone上的推送更为严格。先看看msdn上面怎么说工作原理下图显示了发送推送通知过程中涉及的完整数据流。其中包括以下步骤:你的应用向通知客户端平台发送推送通知通道的请求。通知客户端平台请求 WNS 创建一个通知通道。该通道以统一资源标识符 (URI) 的形式返回调用设备。通知通道 URI 由 Windows 返回到你的应用。你的应用将 URI 发送到你自己的云服务。此回调机制是你自己的应用与你自己的服务之间 阅读全文
posted @ 2013-01-22 11:02 BeyondBlog 阅读(859) 评论(2) 推荐(1) 编辑
摘要: 在Windows8 上检测网络很简单用到NetworkInformation这个类可以看到这个类里面有以下几个方法和事件public static event NetworkStatusChangedEventHandler NetworkStatusChanged;//网络连接改变的事件public static IReadOnlyList<ConnectionProfile> GetConnectionProfiles();public static IReadOnlyList<HostName> GetHostNames();//获取HostGetInternet 阅读全文
posted @ 2012-12-13 09:26 BeyondBlog 阅读(577) 评论(1) 推荐(1) 编辑
摘要: 在做应用开发的时候难免想赚点伙食费什么的,也就是所谓的收费应用。Windows8里头的收费有应用收费和应用内收费应用收费很简单在应用发布的‘销售详细’时候设置国家然后设置金额就行如下图然后就等待用户点击购买吧,当然你也可以添加试用功能。当你选择的是应用收费的话,你可以在程序中取到当前应用的License(存有应用的相关信息)这里面可以判断当前应用是否处于试用状态已经证书有效日期。如果你想添加应用内收费的话,需要在上传的时候声明,就是在'高级功能'哪儿如下图这里面的产品ID不要乱输入应是字符串而且是唯一的(相对于这个应用)因为在代码中要更具这个产品ID来取相关信息。当你添加产品I 阅读全文
posted @ 2012-12-10 17:15 BeyondBlog 阅读(455) 评论(1) 推荐(0) 编辑
摘要: 因为开发的需要,得用上时间日期选择,Windows 8 Apps上微软竟然没有提供DatePicker这么重要的控件,Windows Phone都有。然后准备自己写一个,先看看有没有轮子。谷歌了一下,有好用的但是要收费,然后我找到了http://www.irisclasson.com/2012/07/19/example-metro-app-winrt-homemade-chart-and-datepicker-for-metro-apps/找到轮子了,造车!先看看运行效果怎么样不错吧。其实原理就是用三个ComboBox,然后是自定义的样式加上数据绑定就搞定。目前只实现了时间日期选择,不足的是 阅读全文
posted @ 2012-12-09 13:52 BeyondBlog 阅读(362) 评论(0) 推荐(1) 编辑
点击右上角即可分享
微信分享提示