Expose

(7)ASP.NET Core 中的错误处理

倖福魔咒の 提交于 2020-04-22 05:12:00
1.前言 ASP.NET Core处理错误环境区分为两种:开发环境和非开发环境。 ● 开发环境 :开发人员异常页。 ● 非开发环境 :异常处理程序页、状态代码页。 在Startup.Configure方法里面我们会看到如下代码: public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { // 开发环境 } else { // 非开发环境 } } env.IsDevelopment()是判断应用程序运行是在开发环境还是非开发环境,具体配置在Properties/launchSettings.json,找到ASPNETCORE_ENVIRONMENT属性,默认值是开发环境(Development),具体环境配置知识点后面我们再来学习下。 2.开发人员异常页 向Startup.Configure方法添加代码,以当应用在开发环境中运行时启用此页: if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } 开发人员异常页仅当应用程序在开发环境中运行时才会启用,而且调用UseDeveloperExceptionPage要配置于任何要捕获其异常的中间件前面。

Springboot项目打jar包 docker 部署

旧城冷巷雨未停 提交于 2020-04-20 14:16:57
SpingBoot项目打包成jar 包 部署在docker容器中首先要准备两个文件: 1、项目jar包(在这里不做说明); 2、dockerfile 文件(没有任何后缀的文件) 2.1 dockerfile 文件的编写: 文件内容如下: FROM java:8 VOLUME /tmp COPY springBootDocker-0.0.1-SNAPSHOT.jar app.jar RUN bash -c "touch /app.jar" EXPOSE 9011 ENTRYPOINT ["java","-jar","app.jar","--spring.profiles.active=test","--server.port=9011",">/log/app.log"] 对以上内容做一个简单说明: java:8是指Docker Hub上官方提供的java镜像,版本号是8也就是jdk1.8,有了这个基础镜像后,Dockerfile可以通过FROM指令直接获取它的状态——也就是在容器中java是已经安装的,接下来通过自定义的命令来运行Spring Boot应用: VOLUME 指向了一个/tmp的目录,由于Spring Boot使用内置的Tomcat容器,Tomcat默认使用/tmp作为工作目录。效果就是在主机的/var/lib/docker目录下创建了一个临时文件,并连接到容器的

JMX monitoring + Java custom metrics.

点点圈 提交于 2020-04-19 21:01:25
In this tutorial we are going to learn how to instrument Java code to expose application metrics using JMX monitoring. Following the code examples, you can monitor the availability, health and performance of your Java application. Java 1.5 introduced JMX – Java Management eXtensions – which is a standard way to instrument code in the JRE world. It allows you to export standard metrics and custom metrics using MBeans to a monitoring system, and understand how your application is performing (memory usage, cpu usage, number of threads, API calls in a REST endpoint… anything you want to instrument

制作自己的Docker镜像

不想你离开。 提交于 2020-04-17 22:35:27
制作镜像有2种方式,一种是容器转换成镜像,另一种是使用dockerfile创建镜像,一般后者更常用。 容器转为镜像 使用 docker commit 命令将容器转换成镜像 docker commit 容器id 镜像名称:版本号 需要转移镜像时,将该镜像打成一个包 docker save -o 压缩文件名称 镜像名称:版本号 在另一台电脑加载这个镜像时,加载这个包 docker load –i 压缩文件名称 使用dockerfile创建镜像(推荐) dockerfile是一个文本文件,包含了一条条指令,每条指令构建一层,基于基础镜像,最终构建出一个新的镜像。 dockerfile用到的关键字 关键字 作用 备注 FROM 指定父镜像 指定dockerfile基于那个image构建 MAINTAINER 作者信息 用来标明这个dockerfile谁写的 LABEL 标签 用来标明dockerfile的标签 可以使用Label代替Maintainer 最终都是在docker image基本信息中可以查看 RUN 执行命令 执行一段命令 默认是/bin/sh 格式: RUN command 或者 RUN ["command" , "param1","param2"] CMD 容器启动命令 提供启动容器时候的默认命令 和ENTRYPOINT配合使用.格式 CMD command param1

golang gin框架开启跨域

泄露秘密 提交于 2020-04-15 16:52:09
【推荐阅读】微服务还能火多久?>>> 前言 gin开启跨域,只需要添加一个全局中间件到路由器即可 gin 中间件 gin的中间件可以添加到全局, 也可以添加到单个路由上 添加到全局 r := gin.New() r.Use(gin.Logger()) r.Use(gin.Recovery()) 这里的两个中间件就是 gin.Default()帮我们初始化的两个中间件 添加到单个路由 authorized := r.Group("/") authorized.Use(AuthRequired()) gin开启跨域 gin开启跨域其实还是很简单的, 演示代码如下: package main import ( "github.com/gin-gonic/gin" ) func main() { r := gin.Default() r.Use(Cors()) // 主要是这里 r.GET("/test", function(){ c.String(200, "success") }) _ = r.Run(":8080") } // 开启跨域函数 func Cors() gin.HandlerFunc { return func(c *gin.Context) { c.Writer.Header().Set("Access-Control-Allow-Origin", "*") c

Unity Editor扩展编辑器中显示脚本属性

吃可爱长大的小学妹 提交于 2020-04-13 18:26:56
【今日推荐】:为什么一到面试就懵逼!>>> 目录 Unity Editor扩展编辑器中显示脚本属性 背景 实现效果 总体结构 代码 Unity Editor扩展编辑器中显示脚本属性 背景 近期需要完成一个扩展编辑器中的功能,即在Scene视图中任意选择某GameObject,然后给这个GameObject动态添加指定脚本,难点是需要让脚本的属性也同时暴露出来,让我们可以随时修改其中公共属性,并序列化下来。 实现效果 如上图所示,具体展示的功能就是可以给场景中任意物体附加指定的脚本,并且显示脚本想要序列化的属性。(这里我其实想将指定的脚本也做成可以随时拖动替换的,奈何技术不够,只能先将要拖动的脚本写在代码里。) 总体结构 为了实现这个功能,需要有以下几个脚本: ExposePropertyAttribute.cs:该脚本为特性申明类,注意该脚本不能放到Editor文件夹下 ExposeProperties.cs:该脚本为特性实现类,是这个功能实现的核心脚本,需要放到Editor文件夹下 MyType.cs:任意你需要显示修改属性的类 MyTypeEditor.cs:你要实现扩展编辑器脚本 以上脚本中,也可以清楚地看出后两个脚本是自定义的,核心是实现前两个脚本。 代码 ExposePropertyAttribute.cs using System; [AttributeUsage

Unity Editor扩展编辑器中显示脚本属性

蓝咒 提交于 2020-04-13 17:00:23
【今日推荐】:为什么一到面试就懵逼!>>> 目录 Unity Editor扩展编辑器中显示脚本属性 背景 实现效果 总体结构 代码 Unity Editor扩展编辑器中显示脚本属性 背景 近期需要完成一个扩展编辑器中的功能,即在Scene视图中任意选择某GameObject,然后给这个GameObject动态添加指定脚本,难点是需要让脚本的属性也同时暴露出来,让我们可以随时修改其中公共属性,并序列化下来。 实现效果 如上图所示,具体展示的功能就是可以给场景中任意物体附加指定的脚本,并且显示脚本想要序列化的属性。(这里我其实想将指定的脚本也做成可以随时拖动替换的,奈何技术不够,只能先将要拖动的脚本写在代码里。) 总体结构 为了实现这个功能,需要有以下几个脚本: ExposePropertyAttribute.cs:该脚本为特性申明类,注意该脚本不能放到Editor文件夹下 ExposeProperties.cs:该脚本为特性实现类,是这个功能实现的核心脚本,需要放到Editor文件夹下 MyType.cs:任意你需要显示修改属性的类 MyTypeEditor.cs:你要实现扩展编辑器脚本 以上脚本中,也可以清楚地看出后两个脚本是自定义的,核心是实现前两个脚本。 代码 ExposePropertyAttribute.cs using System; [AttributeUsage

4.12

我们两清 提交于 2020-04-12 23:31:04
问题 创建容器的时候报错WARNING: WARNING: IPv4 forwarding is disabled. Networking will not work. vim /usr/lib/sysctl.d/00-system.conf net.ipv4.ip_forward=1 FROM centos:8.1 WORKDIR /usr/local COPY nginx-1.12.2-1.el7_4.ngx.x86_64.rpm./ RUN yum -y install /root/nginx-1.16.0-1.el7.ngx.x86_64.rpm EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] nginx -g daemon off docker 容器默认会把容器内部第一个进程,也就是pid=1的程序作为docker容器是否正在运行的依据, 如果docker 容器pid挂了,那么docker容器便会直接退出。 CMD 怎么没起作用 entrypoint 来源: oschina 链接: https://my.oschina.net/wuzsheng/blog/3231319

K8s

[亡魂溺海] 提交于 2020-04-12 15:05:47
kubernetes(简称 K8s)是一个开源的,用于管理云平台中多个主机上的容器化的应用。 在之前的文章中,我介绍如何通过 Docker 为我们提供的实验网站 Play with Kubernetes(PWK)来搭建 Kubernetes 集群(点击查看)。 但如果每次学习时都需要重新搭建一个 K8s 集群还是很麻烦。好在 Kubernetes 官网已经为我们准备好了现成的最小可用系统。我们通过 Web 浏览器就可以直接使用一个预先部署好的 Kubernetes 集群,快速体验 Kubernetes 的功能和应用场景。 1,创建 Kubernetes 集群 (1)首先访问官网的在线教程: 在线教程地址:https://kubernetes.io/docs/tutorials/ (2)点击左侧菜单的“Learn Kubernetes Basics” -> “Create a Cluster” -> “Interactive Tutorial - Creating a Cluster” (3)点击打开页面中的“START SCENARIO”按钮即可打开 Terminal(命令终端窗口) (4)在终端中执行如下命令即可开始初始化集群: 1 minikube start (5)可以看到这样就创建好了一个单节点的 kubernetes 集群。 2,部署应用 (1

docker 运行并使用 arthas 的方式

China☆狼群 提交于 2020-03-13 19:52:28
docker 运行并使用 arthas 的方式 docker run --init FROM openjdk:8-jdk-alpine # copy arthas COPY --from=hengyunabc/arthas:latest /opt/arthas /opt/arthas ENV LOG_PATH=/opt/logs \ LOG_HOME=/opt/logs/backup RUN mkdir -p /opt/logs/backup && \ mkdir -p /opt/apps ADD target/*.jar /opt/apps/ EXPOSE 8080 ENTRYPOINT ["java", "-XX:+UseG1GC", "-jar", "/opt/apps/spring-boot-demo.jar"] 安装 tini FROM openjdk:8-jdk-alpine # copy arthas COPY --from=hengyunabc/arthas:latest /opt/arthas /opt/arthas ENV LOG_PATH=/opt/logs \ LOG_HOME=/opt/logs/backup RUN mkdir -p /opt/logs/backup && \ mkdir -p /opt/apps && \ apk add --no