From f9fcca04ec2bf5cc8396bb8088cfdaeb8086dcdc Mon Sep 17 00:00:00 2001 From: Jakson Xavier Date: Sat, 5 Aug 2023 09:24:36 -0300 Subject: [PATCH] chore: set environment variables --- .env.example | 26 ++++++++++++++++++++++++-- Dockerfile | 12 ++++++------ docker-compose.yml | 28 ++++++++++++++-------------- src/config/app.ts | 6 +++--- src/infra/logger/logger.module.ts | 2 +- src/main.ts | 6 +++--- 6 files changed, 51 insertions(+), 29 deletions(-) diff --git a/.env.example b/.env.example index 0083c79..d698ef2 100644 --- a/.env.example +++ b/.env.example @@ -1,11 +1,33 @@ +# App +APP_PORT=3333 +APP_NAME=backend-template +APP_VERSION='0.0.1' + +JWT_SECRET_KEY='JWT_SECRET_KEY' +JWT_PUBLIC_KEY='JWT_PUBLIC_KEY' + # Database DATABASE_HOST=localhost DATABASE_PORT=3306 DATABASE_USER=root DATABASE_PASS=toor DATABASE_NAME=app +DATAVASE_ROOT_PASSWORD=toor DATABASE_URL="mysql://${DATABASE_USER}:${DATABASE_PASS}@${DATABASE_HOST}:${DATABASE_PORT}/${DATABASE_NAME}" -JWT_SECRET_KEY='JWT_SECRET_KEY' -JWT_PUBLIC_KEY='JWT_PUBLIC_KEY' +# Redis +REDIS_HOST=localhost +REDIS_PORT=6379 +REDIS_PASSWORD= + +# kafka +KAFKA_HOST=localhost +KAFKA_PORT=9092 +KAFKA_USER= +KAFKA_PASSWORD= +KAFKA_BROKERS= + +# Zookeeper +ZOOKEEPER_HOST=localhost +ZOOKEEPER_PORT=2181 diff --git a/Dockerfile b/Dockerfile index 4d34ec8..57677c0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -38,14 +38,14 @@ COPY --from=build /var/app/prisma prisma/ RUN wget -O /var/app/dumb-init https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_x86_64 && \ chmod -v +x /var/app/dumb-init RUN npx prisma generate -RUN npx pkg@5.5.2 . -o $SERVICE_NAME -RUN chmod -v +x /var/app/$SERVICE_NAME +RUN npx pkg@5.5.2 . -o $APP_NAME +RUN chmod -v +x /var/app/$APP_NAME FROM node:16-alpine AS runtime ARG DATABASE_URL ENV DATABASE_URL $DATABASE_URL -ARG VERSION="0.0.1" -ENV VERSION $VERSION +ARG APP_VERSION="0.0.1" +ENV APP_VERSION $APP_VERSION ARG COMMIT ENV COMMIT $COMMIT ENV NODE_ENV production @@ -56,6 +56,6 @@ COPY --chown=node:node --from=package /var/app/src /src/ COPY --chown=node:node --from=package /var/app/src src/ # :) COPY --chown=node:node --from=package /var/app/dumb-init dumb-init -COPY --chown=node:node --from=package /var/app/$SERVICE_NAME $SERVICE_NAME +COPY --chown=node:node --from=package /var/app/$APP_NAME $APP_NAME ENTRYPOINT ["/var/app/dumb-init", "--"] -CMD ["/var/app/$SERVICE_NAME"] +CMD ["/var/app/$APP_NAME"] diff --git a/docker-compose.yml b/docker-compose.yml index 3661f77..65331bf 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,14 +5,14 @@ services: database: image: 'bitnami/mysql' - container_name: 'mysql' + container_name: 'mysql-${APP_NAME}' ports: - - '3306:3306' + - '${DATABASE_PORT}:3306' environment: - - MYSQL_DATABASE=app - - MYSQL_USER=docker - - MYSQL_PASSWORD=docker - - MYSQL_ROOT_PASSWORD=toor + - MYSQL_DATABASE=${DATABASE_NAME} + - MYSQL_USER=${DATABASE_USER} + - MYSQL_PASSWORD=${DATABASE_PASS} + - MYSQL_ROOT_PASSWORD=${DATAVASE_ROOT_PASSWORD} volumes: - 'mysql_data:/bitnami/mysql' networks: @@ -20,9 +20,9 @@ services: redis: image: 'bitnami/redis' - container_name: 'redis' + container_name: 'redis-${APP_NAME}' ports: - - '6379:6379' + - '${REDIS_PORT}:6379' environment: - ALLOW_EMPTY_PASSWORD=yes volumes: @@ -32,9 +32,9 @@ services: zookeeper: image: 'bitnami/zookeeper:3' - container_name: 'zookeeper' + container_name: 'zookeeper-${APP_NAME}' ports: - - '2181:2181' + - '${ZOOKEEPER_PORT}:2181' volumes: - 'zookeeper_data:/bitnami' environment: @@ -44,15 +44,15 @@ services: kafka: image: 'bitnami/kafka:3' - container_name: 'kafka' + container_name: 'kafka-${APP_NAME}' ports: - - '9092:9092' + - '${KAFKA_PORT}:9092' volumes: - 'kafka_data:/bitnami' environment: - - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 + - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:${ZOOKEEPER_PORT} - KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR=1 - - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 + - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://${KAFKA_HOST}:${KAFKA_PORT} - ALLOW_PLAINTEXT_LISTENER=yes depends_on: - zookeeper diff --git a/src/config/app.ts b/src/config/app.ts index 8b5677f..48010f6 100644 --- a/src/config/app.ts +++ b/src/config/app.ts @@ -1,6 +1,6 @@ import 'dotenv/config'; -export const PORT = process.env.PORT ?? 3333; +export const PORT = process.env.APP_PORT ?? 3333; export const ENV = process.env.NODE_ENV ?? 'development'; -export const SERVICE = process.env.SERVICE ?? 'backend-template'; -export const VERSION = process.env.VERSION ?? '1.0.0'; +export const APP_NAME = process.env.APP_NAME ?? 'backend-template'; +export const APP_VERSION = process.env.APP_VERSION ?? '1.0.0'; diff --git a/src/infra/logger/logger.module.ts b/src/infra/logger/logger.module.ts index ef976d2..8055933 100644 --- a/src/infra/logger/logger.module.ts +++ b/src/infra/logger/logger.module.ts @@ -67,7 +67,7 @@ const statusText: Record = { imports: [ PinoLoggerModule.forRoot({ pinoHttp: { - name: `${process.env.SERVICE || 'backend'}-logger`, + name: `${process.env.APP_NAME || 'backend'}-logger`, level: process.env.NODE_ENV !== 'production' ? 'debug' : 'info', customLogLevel: (res: ServerResponse, err: Error) => { if (res.statusCode >= 400 && res.statusCode < 500) { diff --git a/src/main.ts b/src/main.ts index b114452..4687f16 100644 --- a/src/main.ts +++ b/src/main.ts @@ -6,7 +6,7 @@ import { LoggerErrorInterceptor } from 'nestjs-pino'; import { LoggerService } from '@infra/logger/logger.service'; import { AppModule } from './app.module'; -import { ENV, PORT, SERVICE, VERSION } from './config/app'; +import { ENV, PORT, APP_NAME, APP_VERSION } from './config/app'; async function bootstrap() { const app = await NestFactory.create(AppModule, { @@ -35,9 +35,9 @@ async function bootstrap() { } tracer.init({ - service: SERVICE, + service: APP_NAME, env: ENV, - version: VERSION, + version: APP_VERSION, runtimeMetrics: true, logInjection: true, });