Exceptionless in Docker on Linux 搭建及部署疑难杂症
https://github.com/exceptionless/Exceptionless
https://github.com/exceptionless/Exceptionless.UI
项目拉下来,nuget还原下,这里我是一直还原不上的,后面强了就对了(最近github一直比较慢,nuget也是慢死了)
先是用了它的docker-compose 里面东西太多了,job总是有问题,后面用源码自己建立一个dockerfile 来打包
打包UI 需要用
npx grunt build
需要安装 grunt 这里就不介绍了
通过之前的 用nginx来打包ui 就行了
通过命令推送到 Harbor
当然也需要安装elasticsearch 5.X ,容器很方便的,后面用容器即可创建es了

一起看起来都很容易
但后面总是出现 403 Error: Forbidden
后面检查了源码发现 模式非Localhost环境下是需要用 https的
services.AddMvc(o => {
o.Filters.Add(new CorsAuthorizationFilterFactory("AllowAny"));
o.Filters.Add<RequireHttpsExceptLocalAttribute>();
o.Filters.Add<ApiExceptionFilter>();
o.ModelBinderProviders.Insert(, new CustomAttributesModelBinderProvider());
o.InputFormatters.Insert(, new RawRequestBodyFormatter());
})
public sealed class RequireHttpsExceptLocalAttribute : RequireHttpsAttribute {
public RequireHttpsExceptLocalAttribute() {
IgnoreLocalRequests = true;
}
}
[ApiController]
[RequireHttpsExceptLocal]
public abstract class ExceptionlessApiController : Controller {
}
使用的时候需要注释一下
分别运行容器 ,这里需要注意的是es容器和exceptionless 要做对于的资料卷挂载 ,后面我统一整理到 docker-compose中


发现都是OK的。
为了实现一键搞定,整理了一个docker-compose 如下
version: "3.3" volumes:
#el
exceptionless_data:
driver: local
#es
elasticsearch_data:
driver: local
# el使用的es
elasticsearch_el_data:
driver: local services: # redis 服务
redis:
image: redis:5.0.3-alpine3.8
container_name: stu-exam_redis
# deploy:
# mode: replicated
# replicas: 1
# resources:
# limits:
# cpus: '0.50'
# memory: 256M
# reservations:
# cpus: '0.10'
# memory: 50M
# restart_policy:
# condition: on-failure
# delay: 5s
# max_attempts: 3
command: redis-server /usr/local/etc/redis/redis.conf
expose:
- '6379'
ports:
- 6379:6379
volumes:
- ./redis/data:/data
- ./redis/redis.conf:/usr/local/etc/redis/redis.conf #ES 5.X master
elasticsearch_master:
image: elasticsearch:5.6.16
container_name: stu-exam_es_master
environment:
- "ES_JAVA_OPTS=-Xms1g -Xmx1g"
- ES_CLUSTERNAME=elasticsearch
command: elasticsearch
volumes:
- elasticsearch_data:/usr/share/elasticsearch/data
- ./elasticsearch/node/master/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
ports:
- 9200:9200
- 9300:9300
# ES node01
# elasticsearch_node01:
# image: elasticsearch:5.6.16
# container_name: stu-exam_es_node01
# environment:
# - bootstrap.memory_lock=true
# - "ES_JAVA_OPTS=-Xms1g -Xmx1g"
# - ES_CLUSTERNAME=elasticsearch
# command: elasticsearch
# volumes:
# - elasticsearch_data/node/node01/data:/usr/share/elasticsearch/data
# - ./elasticsearch/node/node01/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
# ports:
# - 9200:9200
# - 9300:9300
# links:
# - elasticsearch_master #el_api
exceptionless_api:
image: xxxx/tools/exceptionless_api:pro-1.0
container_name: stu-exam_exceptionless_api
# environment:
# AppMode: Production
# EX_ConnectionStrings__Cache: provider=redis
# EX_ConnectionStrings__Elasticsearch: server=http://192.168.0.240:9200
# EX_ConnectionStrings__MessageBus: provider=redis
# EX_ConnectionStrings__Queue: provider=redis
# #EX_ConnectionStrings__Metrics: provider=statsd;server=statsd;
# EX_ConnectionStrings__Queue: provider=redis
# EX_ConnectionStrings__Redis: server=redis,abortConnect=false
# EX_ConnectionStrings__Storage: provider=folder;path=/app/storage
# EX_RunJobsInProcess: 'false'
links:
- elasticsearch_master:es-master
- redis
expose:
- '80'
ports:
- 65000:80
volumes:
- exceptionless_data:/appexceptionless/storage
- ./exceptionless/appsettings.Production.yml:/appexceptionless/appsettings.Production.yml
depends_on:
- elasticsearch_master
# el_ui
exceptionless_ui:
image: xxx/tools/exceptionless_ui:pro-1.0
environment:
AppMode: Development
# EL-API 配置外部URL
BaseUrl: http://192.168.0.240:65000
ports:
- 5100:80
volumes:
- ./exceptionless/conf.js:/usr/share/nginx/html/app.config.11aa095b02872a76.js
depends_on:
- exceptionless_api
通过 docker-compose up 启动全部就搞定了 当然也可以通过 docker-compose 指定的服务名称来启动(exceptionless_ui) ,服务会根据depends_on依赖关系来确定启动的先后顺序。
但是后面使用客户端添加日志,发现日志并没有记录在里面,出现了错误


解决办法:
原来是因为我们使用容器安装的包或者自己下载的es包中缺少插件,这里这个错误就需要安装 mapper-size 这个插件,安装好了,客户端就添加进去了,怎么安装就不介绍了,我们在容器内部安装好相关插件后自己在打包一个自己的es镜像就可以了
最后还有一个问题就是 当我们要从新运行 elasticsearch容器的时候,记得也要重新运行 exceptionless_api,不然当elasticsearch rm掉之后,exceptionless_api访问会出现问题 mapper相关的问题,可能是因为 exceptionless_api 再次访问会从新创建 es 分片的原因
docker run -d --name=elasticsearch_node1 \
-v /root/customdata/es/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /root/customdata/es/data:/usr/share/elasticsearch/data \
-v /root/customdata/es/plugins/:/usr/share/elasticsearch/plugins/ \
-p : -p : elasticsearch:5.6. ui:
docker run -d --name=exceptionlessui_node1 -v /root/customdata/exceptionless_ui/app.config.js:/usr/share/nginx/html/app.config.11aa095b02872a76.js -p : xxxx/tools/exceptionless_ui:pro-1.0 exceptionlessapi:
docker run -d --name=exceptionlessapi_node1 -v /root/customdata/exceptionless_api/appsettings.Production.yml:/appexceptionless/appsettings.Production.yml \
-v /root/customdata/exceptionless_api/storage/:/appexceptionless/storage \
-p : xxxx/tools/exceptionless_api:pro-1.0

Exceptionless in Docker on Linux 搭建及部署疑难杂症的更多相关文章
- Docker —— 用于统一开发和部署的轻量级 Linux 容器【转】
转自:http://www.oschina.net/translate/docker-lightweight-linux-containers-consistent-development-and-d ...
- 从零实现Linux一键自动化部署.netCore+Vue+Nginx项目到Docker中
环境搭建 1.安装Linux,这里我用的阿里云服务器,CentOS7版本 2.进入Linux,安装Docker,执行以下命令 sudo yum update #更新一下yum包 sudo yum in ...
- Linux Ubuntu从零开始部署web环境及项目-----搭建ssh环境(一)
linux搭建ssh环境 1,用户登录 成功输入用户名和密码后 进入Ubuntu界面 2,配置网络 参考:http://blog.csdn.net/liu782726344/article/deta ...
- docker快速入门+搭建javaweb环境
一.windows安装 不要安装旧的 boot2docker包,直接安装 DockerToolbox. 一路next,安装完成以后 试用 1.以管理员身份运行 docker quickstart te ...
- 超快速使用docker在本地搭建hadoop分布式集群
超快速使用docker在本地搭建hadoop分布式集群 超快速使用docker在本地搭建hadoop分布式集群 学习hadoop集群环境搭建是hadoop入门的必经之路.搭建分布式集群通常有两个办法: ...
- Docker Kubernetes 环境搭建
Docker Kubernetes 环境搭建 节点规划 版本 系统:Centos 7.4 x64 Docker版本:18.09.0 Kubernetes版本:v1.8 etcd存储版本:etcd-3. ...
- 使用 Docker 在 Linux 上托管 ASP.NET Core 应用程序
说在前面 在阅读本文之前,您必须对 Docker 的中涉及的基本概念以及常见命令有一定了解,本文侧重实战,不会对相关概念详述. 同时请确保您本地开发机器已完成如下安装: Docker 18.06 或更 ...
- Ubunut18 安装docker环境&&AWD攻防平台部署
docker:有两个版本:docker-ce(社区版)和docker-ee(企业版). 参考官网地址:https://docs.docker.com/engine/installation/linux ...
- Docker学习-Kubernetes - 集群部署
Docker学习 Docker学习-VMware Workstation 本地多台虚拟机互通,主机网络互通搭建 Docker学习-Docker搭建Consul集群 Docker学习-简单的私有Dock ...
随机推荐
- Spring Cloud Feign 服务消费调用(三)
序言 Spring Cloud Netflix的微服务都是以HTTP接口的形式暴露的,所以可以用Apache的HttpClient或Spring的RestTemplate去调用 而Feign是一个使用 ...
- 【UOJ#389】【UNR#3】白鸽(欧拉回路,费用流)
[UOJ#389][UNR#3]白鸽(欧拉回路,费用流) 题面 UOJ 题解 首先第一问就是判断是否存在一条合法的欧拉回路,这个拿度数和连通性判断一下就行了. 第二问判断转的圈数,显然我们只需要考虑顺 ...
- C# based on PdfSharp to split pdf files and get MemoryStream C#基于PdfSharp拆分pdf,并生成MemoryStream
install-package PdfSharp -v 1.51.5185-beta using System; using PdfSharp.Pdf; using System.IO; using ...
- Linux文本文件——管理文本的命令
Linux文本文件——管理文本的命令 摘要:本文主要学习了在Linux中管理文本的命令. cat命令 cat命令用来显示文本文件的内容,也可以把几个文件内容附加到另一个文件中,即连接合并文件,是Con ...
- open*** 搭建
pptp 互联网上服务商给拦截.不稳定. opevpn 1.为了保证OpenVPN的安装,需要使用easy-rsa秘钥生成工具生成证书 [root@m01 ~]# yum install easy-r ...
- 将多个sass文件合并到一个文件中
将多个sass文件合并到一个文件中 应用场景:制作angular npm包的时候,定义的一些全局样式,自定义主题色这类的情况下,多个scss文件会要合并成一个文件并写到dist文件里,发布到仓库中. ...
- JavaScript BOM Cookie 的用法
JavaScript Cookie Cookie是计算机上存储在小文本文件中的数据.当Web服务器将网页发送到浏览器时,连接将关闭,服务器将忘记用户的所有内容.发明Cookie是为了解决“如何记住用户 ...
- iframe超出外层元素显示滚动条怎么办?
尝试把外层盒子滚动条样式隐藏,或者设为overflow:hidden等都不生效,突然发现iframe有这个属性的忘记用了!! <iframe frameborder="0" ...
- Unity中AndroidManifest增加权限,打开应用时不弹出权限申请
一 屏蔽第一次打开apk时权限弹窗: 在Activity下添加<meta-data android:name="unityplayer.SkipPermissionsDialog&qu ...
- centos6.8下hadoop3.1.1完全分布式安装指南
前述:这篇文档是建立在三台虚拟机相互ping通,防火墙关闭,hosts文件修改,SSH 免密码登录,主机名修改等的基础上开始的. 一.传入文件 1.创建安装目录 mkdir /usr/local/so ...