diff --git a/README.md b/README.md index a1f58ce..233b855 100644 --- a/README.md +++ b/README.md @@ -135,6 +135,11 @@ Run this app in docker using the [docker-compose.yaml](./deployments/docker-comp ```bash docker-compose -f ./deployments/docker-compose/docker-compose.yaml up -d ``` +Also we have a seprate docker file for up and running [infrastructure](./deployments/docker-compose/infrastracture.yaml) independently. + +```bash +docker-compose -f ./deployments/docker-compose/infrastracture.yaml up -d +``` ### Documentation Apis diff --git a/deployments/docker-compose/infrastracture.yaml b/deployments/docker-compose/infrastracture.yaml new file mode 100644 index 0000000..8bd9689 --- /dev/null +++ b/deployments/docker-compose/infrastracture.yaml @@ -0,0 +1,141 @@ +version: "3.3" +services: + + ####################################################### + # Rabbitmq + ####################################################### + rabbitmq: + image: rabbitmq:3-management + container_name: rabbitmq + restart: unless-stopped + ports: + - 5672:5672 + - 15672:15672 + networks: + - booking + + + ####################################################### + # SqlServer + ####################################################### + db: + container_name: sqldb + image: mcr.microsoft.com/mssql/server:2017-latest + restart: unless-stopped + ports: + - "1433:1433" + environment: + SA_PASSWORD: "@Aa123456" + ACCEPT_EULA: "Y" + networks: + - booking + + + ####################################################### + # Jaeger + ####################################################### + jaeger: + image: jaegertracing/all-in-one + container_name: jaeger + restart: unless-stopped + networks: + - booking + ports: + - 5775:5775/udp + - 5778:5778 + - 6831:6831/udp + - 6832:6832/udp + - 9411:9411 + - 14268:14268 + - 16686:16686 + + + ####################################################### + # EventStoreDB + ####################################################### + eventstore.db: + image: eventstore/eventstore:21.2.0-buster-slim + restart: on-failure + environment: + - EVENTSTORE_CLUSTER_SIZE=1 + - EVENTSTORE_RUN_PROJECTIONS=All + - EVENTSTORE_START_STANDARD_PROJECTIONS=true + - EVENTSTORE_EXT_TCP_PORT=1010 + - EVENTSTORE_EXT_HTTP_PORT=2113 + - EVENTSTORE_INSECURE=true + - EVENTSTORE_ENABLE_EXTERNAL_TCP=true + - EVENTSTORE_ENABLE_ATOM_PUB_OVER_HTTP=true + ports: + - '1010:1113' + - '2113:2113' + networks: + - booking + + + ####################################################### + # Mongo + ####################################################### + mongo: + image: mongo + container_name: mongo + restart: unless-stopped + # environment: + # - MONGO_INITDB_ROOT_USERNAME=root + # - MONGO_INITDB_ROOT_PASSWORD=secret + networks: + - booking + ports: + - 27017:27017 + volumes: + - mongo:/data/db + + + ####################################################### + # Elastic Search + ####################################################### + elasticsearch: + container_name: elasticsearch + image: docker.elastic.co/elasticsearch/elasticsearch:7.9.2 + ports: + - 9200:9200 + volumes: + - elasticsearch-data:/usr/share/elasticsearch/data + environment: + - xpack.monitoring.enabled=true + - xpack.watcher.enabled=false + - "ES_JAVA_OPTS=-Xms512m -Xmx512m" + - discovery.type=single-node + networks: + - booking + + ####################################################### + # Kibana + ####################################################### + kibana: + container_name: kibana + image: docker.elastic.co/kibana/kibana:7.9.2 + ports: + - 5601:5601 + depends_on: + - elasticsearch + environment: + - ELASTICSEARCH_URL=http://localhost:9200 + networks: + - booking + + + +networks: + booking: + name: booking + + +volumes: + db-data: + external: false + mongo: + driver: local + elasticsearch-data: + + + diff --git a/src/BuildingBlocks/HealthCheck/Extensions.cs b/src/BuildingBlocks/HealthCheck/Extensions.cs index 33bfbe6..fdd8584 100644 --- a/src/BuildingBlocks/HealthCheck/Extensions.cs +++ b/src/BuildingBlocks/HealthCheck/Extensions.cs @@ -1,6 +1,9 @@ using BuildingBlocks.EFCore; +using BuildingBlocks.Logging; using BuildingBlocks.MassTransit; +using BuildingBlocks.Mongo; using BuildingBlocks.Web; +using DotNetCore.CAP.MongoDB; using HealthChecks.UI.Client; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Diagnostics.HealthChecks; @@ -14,18 +17,22 @@ public static class Extensions { public static IServiceCollection AddCustomHealthCheck(this IServiceCollection services) { + var appOptions = services.GetOptions("AppOptions"); var sqlOptions = services.GetOptions("ConnectionStrings"); var rabbitMqOptions = services.GetOptions("RabbitMq"); + var mongoOptions = services.GetOptions("MongoOptions"); + var logOptions = services.GetOptions("LogOptions"); services.AddHealthChecks() .AddSqlServer(sqlOptions.DefaultConnection) - .AddRabbitMQ(rabbitConnectionString: - $"amqp://{rabbitMqOptions.UserName}:{rabbitMqOptions.Password}@{rabbitMqOptions.HostName}"); + .AddMongoDb(mongoOptions.ConnectionString) + .AddRabbitMQ(rabbitConnectionString: $"amqp://{rabbitMqOptions.UserName}:{rabbitMqOptions.Password}@{rabbitMqOptions.HostName}") + .AddElasticsearch(logOptions.ElasticUri); services.AddHealthChecksUI(setup => { setup.SetEvaluationTimeInSeconds(60); // time in seconds between check - setup.AddHealthCheckEndpoint("Basic Health Check", "/healthz"); + setup.AddHealthCheckEndpoint($"Basic Health Check - {appOptions.Name}", "/healthz"); }).AddInMemoryStorage(); return services;