diff --git a/.drone.yml b/.drone.yml index 2b39f4a..a7663d8 100644 --- a/.drone.yml +++ b/.drone.yml @@ -151,7 +151,7 @@ trigger: --- kind: pipeline type: docker -name: Deploy Pipeline +name: Staging Deploy Pipeline workspace: path: /drone/grow @@ -169,10 +169,10 @@ steps: ROUTE_PREFIX: /auth PORT: 9001 commands: - - docker compose -f docker-compose.staging_image.yml pull - - docker compose -f docker-compose.staging_image.yml build --no-cache - - docker compose -f docker-compose.staging_image.yml rm --stop - - docker compose -f docker-compose.staging_image.yml up --wait + - docker compose -f docker-compose.staging-build.yml pull + - docker compose -f docker-compose.staging-build.yml build --no-cache + - docker compose -f docker-compose.staging-build.yml rm --stop + - docker compose -f docker-compose.staging-build.yml up --wait volumes: - name: env-secrets path: /drone/grow/staging.env @@ -211,6 +211,75 @@ volumes: depends_on: - Test Pipeline +trigger: + branch: + - development + event: + - push + +--- +kind: pipeline +type: docker +name: Production Deploy Pipeline + +workspace: + path: /drone/grow + +clone: + disable: true + +steps: +- name: Deploy Container + image: docker + privileged: true + environment: + CONTAINER_PREFIX: staging + HOST: area51.mifi.dev + ROUTE_PREFIX: /auth + PORT: 9001 + commands: + - docker compose -f docker-compose.production-build.yml pull + - docker compose -f docker-compose.production-build.yml build --no-cache + - docker compose -f docker-compose.production-build.yml rm --stop + - docker compose -f docker-compose.production-build.yml up --wait + volumes: + - name: env-secrets + path: /drone/grow/production.env + - name: dockersock + path: /var/run/docker.sock + - name: dockerconfig + path: /drone/grow/.docker/config.json +- name: Send Status Notifications + image: plugins/webhook + privileged: true + settings: + urls: https://lab.mifi.dev/hooks/ccw34hdf7tgbjmzp96nptn938r + content_type: application/json + template: | + { + "icon_url":"https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/120/apple/198/freezing-face_1f976.png", + "text": "[{{ repo.name }} - Build # {{ build.number }}] Deploy {{ build.status }} {{#success build.status}}:tada:{{else}}:poop:{{/success}}", + "username":"DroneBot" + } + when: + status: + - success + - failure + +volumes: +- name: dockerconfig + host: + path: /volume1/docker/dockerconfig.json +- name: dockersock + host: + path: /var/run/docker.sock +- name: env-secrets + host: + path: /volume1/docker/beethoven/labs-auth/staging.env + +depends_on: + - Test Pipeline + trigger: event: - promote diff --git a/.env.dev b/.env.dev index ed262b2..b4ca1a3 100644 --- a/.env.dev +++ b/.env.dev @@ -27,3 +27,5 @@ RESET_VALID_MINUTES=15 DEFAULT_TOKEN_DAYS=1 CONTAINER_PREFIX=dev +SERVICE_NAME=auth-service +ENV=development diff --git a/Dockerfile b/Dockerfile index b5e76cb..82ff5cc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,5 @@ FROM node:20-alpine AS build +ENV NODE_ENV development WORKDIR /home/node/app COPY package*.json ./ COPY tsconfig.json ./ @@ -14,5 +15,5 @@ WORKDIR /home/node/app COPY package*.json ./ RUN yarn install --frozen-lockfile --production COPY --from=0 /home/node/app/dist . -EXPOSE ${PORT} +EXPOSE ${PORT:-9001} CMD ["node","server/index.js"] diff --git a/README.md b/README.md index eef4e0c..1a251b3 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ -# grow-api +# @mifi/auth diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 2d5df4c..be2c7a3 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -3,16 +3,13 @@ version: '3.8' services: auth-service_mongo: env_file: .env.dev - build: - args: - - CONTAINER_PREFIX=${CONTAINER_PREFIX} container_name: ${CONTAINER_PREFIX:-dev}-auth-service_mongo ports: - 27017:27017 networks: - - labs-net + - backend volumes: - - /var/tmp/labs:/data/db + - auth-db:/data - ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro restart: unless-stopped image: mongo:latest @@ -21,10 +18,8 @@ services: build: context: . args: - - HOST=${HOST} - - PORT=${PORT} - - ROUTE_PREFIX=${ROUTE_PREFIX} - - CONTAINER_PREFIX=${CONTAINER_PREFIX} + - PORT + - ENV container_name: ${CONTAINER_PREFIX:-dev}-auth-service ports: - 9001:9001 @@ -32,6 +27,7 @@ services: - DB_HOST=${CONTAINER_PREFIX:-dev}-auth-service_mongo networks: - labs-net + - backend restart: unless-stopped image: node:20-alpine depends_on: @@ -39,3 +35,7 @@ services: networks: labs-net: name: labs-net + +volumes: + auth-db: + external: true diff --git a/docker-compose.staging.yml b/docker-compose.staging-build.yml similarity index 66% rename from docker-compose.staging.yml rename to docker-compose.staging-build.yml index a6caca2..427b6de 100644 --- a/docker-compose.staging.yml +++ b/docker-compose.staging-build.yml @@ -2,23 +2,27 @@ version: '3.8' services: auth-service_mongo: - container_name: ${CONTAINER_PREFIX}-auth-service_mongo + container_name: ${CONTAINER_PREFIX:-staging}-auth-service_mongo env_file: - staging.env networks: - docknet volumes: - - '/volume1/docker/labs/auth/mongo:/data/db' - # - ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro + - 'auth-db:/data' + - './mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro' restart: unless-stopped image: mongo:latest auth-service: env_file: - staging.env - build: . - container_name: ${CONTAINER_PREFIX}-auth-service + build: + context: . + args: + - PORT + - ENV + container_name: ${CONTAINER_PREFIX:-staging}-auth-service environment: - - DB_HOST=${CONTAINER_PREFIX}-auth-service_mongo + - DB_HOST=${CONTAINER_PREFIX:-staging}-auth-service_mongo labels: - 'traefik.enable=true' - 'traefik.http.routers.grow.rule=Host(`${HOST}`) && Path(`${ROUTE_PREFIX}`)' @@ -36,4 +40,8 @@ services: networks: docknet: name: docknet - external: true \ No newline at end of file + external: true + +volumes: + auth-db: + external: false diff --git a/docker-compose.staging_image.yml b/docker-compose.staging-image.yml similarity index 72% rename from docker-compose.staging_image.yml rename to docker-compose.staging-image.yml index 0a61e98..17061ac 100644 --- a/docker-compose.staging_image.yml +++ b/docker-compose.staging-image.yml @@ -2,22 +2,22 @@ version: '3.8' services: auth-service_mongo: - container_name: ${CONTAINER_PREFIX}-auth-service_mongo + container_name: ${CONTAINER_PREFIX:-staging}-auth-service_mongo env_file: - staging.env networks: - docknet volumes: - - '/volume1/docker/labs/auth/mongo:/data/db' - # - ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro + - auth-db:/data + - ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro restart: unless-stopped image: mongo:latest auth-service: env_file: - staging.env - container_name: ${CONTAINER_PREFIX}-auth-service + container_name: ${CONTAINER_PREFIX:-staging}-auth-service environment: - - DB_HOST=${CONTAINER_PREFIX}-auth-service_mongo + - DB_HOST=${CONTAINER_PREFIX:-staging}-auth-service_mongo labels: - 'traefik.enable=true' - 'traefik.http.routers.grow.rule=Host(`${HOST}`) && Path(`${ROUTE_PREFIX}`)' @@ -32,7 +32,12 @@ services: image: git.mifi.dev/mifi/mifi/auth:latest depends_on: - auth-service_mongo + networks: docknet: name: docknet - external: true \ No newline at end of file + external: true + +volumes: + auth-db: + external: false diff --git a/lib/constants/db.ts b/lib/constants/db.ts index 702dc6f..dea26e8 100644 --- a/lib/constants/db.ts +++ b/lib/constants/db.ts @@ -1,5 +1,5 @@ -export const DB_HOST = process.env.DB_HOST || 'not_set'; +export const DB_HOST = process.env.DB_HOST; export const DB_PORT = process.env.DB_PORT || 27017; -export const DB_USERNAME = process.env.DB_USERNAME || 'not_set'; -export const DB_PASSWORD = process.env.DB_PASSWORD || 'not_set'; -export const DB_NAME = process.env.DB_NAME || 'not_set'; +export const DB_USERNAME = process.env.DB_USERNAME; +export const DB_PASSWORD = process.env.DB_PASSWORD; +export const DB_NAME = process.env.DB_NAME; diff --git a/lib/server/index.ts b/lib/server/index.ts index f54676e..4db2be5 100644 --- a/lib/server/index.ts +++ b/lib/server/index.ts @@ -5,7 +5,7 @@ import { PORT } from '../constants/env'; connection.then( () => { app.listen(PORT); - console.log('LISTENING', process.env); + console.debug('Server up and listening', { env: process.env }); }, - (err) => console.error('SERVER ERROR!', { err, env: process.env }), + (err) => console.error('Could not reach database', { err, env: process.env }), ); diff --git a/package.json b/package.json index a1164fe..9580319 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@mifi/auth", - "version": "0.0.37", + "version": "0.0.38", "author": "mifi (Mike Fitzpatrick)", "license": "MIT", "scripts": {