From 0a9956e1aec91019ede0720a4e49bb6501dc171e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20T=C3=B6lle?= Date: Tue, 12 Jul 2022 21:09:41 +0200 Subject: [PATCH] feat(api): add local repl console Based on the REPL from NestJS 9 --- docker-compose.yml | 30 +++++++++++++++++++++++++++++- package.json | 1 + src/console.ts | 11 +++++++++++ 3 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 src/console.ts diff --git a/docker-compose.yml b/docker-compose.yml index 0746f92..b883ab7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,4 @@ -version: "3.4" +version: "3.9" # Required for promtail scraping x-logging: &default-logging @@ -84,6 +84,34 @@ services: volumes: - /var/run/docker.sock:/var/run/docker.sock # So that Traefik can listen to the Docker events + console: + profiles: + - console + build: + context: . + target: build-api + command: ["npm", "run", "start:console"] + stdin_open: true + tty: true + environment: + DB_HOST: db + DB_USERNAME: listory + DB_PASSWORD: listory + DB_DATABASE: listory + JWT_SECRET: listory + APP_URL: "http://localhost:3000" + NODE_ENV: local # pretty logs + + OTEL_EXPORTER_OTLP_ENDPOINT: http://tempo:4318/v1/traces + env_file: .env + volumes: + - ./src:/app/src + ports: + - "9464:9464" # Metrics + networks: + - db + logging: *default-logging + networks: db: {} web: {} diff --git a/package.json b/package.json index 24c0db1..7b836bc 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "format": "prettier --write \"src/**/*.ts\"", "start": "nest start", "start:dev": "nest start --watch", + "start:console": "nest start --watch --entryFile console", "start:debug": "nest start --debug --watch", "start:prod": "node dist/main", "lint": "eslint --ext .js,.jsx,.ts,.tsx src/ frontend/src/", diff --git a/src/console.ts b/src/console.ts new file mode 100644 index 0000000..8ebebbb --- /dev/null +++ b/src/console.ts @@ -0,0 +1,11 @@ +import { repl } from "@nestjs/core"; +import { AppModule } from "./app.module"; +import { otelSDK } from "./open-telemetry/sdk"; + +async function bootstrap() { + await otelSDK.start(); + + // TODO: Disable scheduled tasks from SourcesModule when in repl mode + await repl(AppModule); +} +bootstrap();