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 ...
随机推荐
- Kubernetes RBAC授权普通用户对命名空间访问权限
Kubernetes RBAC授权普通用户对命名空间访问权限 官方文档:https://www.cnblogs.com/xiangsikai/p/11413970.html kind: Role ap ...
- 一个JAVA应用启动缓慢问题排查 --来自jdk securerandom 的问候
开发某个项目过程中,就需求,搭建了一套测试环境.很快完成! 后来代码中加入了许多新功能,会涉及到反复重启,然后就发现了启动特别慢.这给原本功能就不多的应用增添了许多的负担. 我决定改变这一切!找到启动 ...
- SQL Server备份时间段内插入的数据依旧进入了备份文件?(转载)
问 MSSql我在本机测试了下.为了延长备份时间,找个大的数据库.开始完整备份bak然后再此库新建表,并增添数据.备份结束.==================还原备份后,在还原的数据库内发现新增的表 ...
- ASP.NET Core快速入门(第2章:配置管理)--学习笔记
课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 任务9:配置介绍 命令行配置 Json文件配置 从配置文件文本到c#对象实例的 ...
- vue 脚手架搭建步骤!
========================================================== 说出来都是泪,最开始都不知道从哪里开始(回头一看还是很简单的,关键是要找到入口) ...
- Redis入门学习(二):下载安装
Linux操作系统 Download, extract and compile Redis with: $ wget http://download.redis.io/releases/redis-4 ...
- Innodb Change Buffer
Change Buffer属于Innodb内存中的一块结构,它主要用来缓存对二级索引数据的修改(insert, update, delete)操作当二级索引不在Buffer pool中的时候,这些写操 ...
- 关于微信小程序中遇到的各种问题汇总(持续更新)
1.关于 <input />标签容易忽略的问题: 使用<input />标签时容易忘记绑定bindblur()方法(输入框失去焦点时触发),因为用户用键盘输入时不一定会点击完成 ...
- scanf的返回值
参考这个博客,https://blog.csdn.net/sinat_40936062/article/details/84348021 #include<stdio.h> int mai ...
- 201871010124-王生涛 《面向对象程序设计(java)》第八周学习总结
博文正文开头格式:(2分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.co ...