diff --git a/.drone.yml b/.drone.yml index b9f993a..3d4cee9 100644 --- a/.drone.yml +++ b/.drone.yml @@ -109,19 +109,29 @@ steps: - success - failure - name: Publish Image - image: plugins/docker - settings: - auto_tag: true - squash: true - repo: git.mifi.dev/mifi/auth - context: mifi - registry: git.mifi.dev - username: - from_secret: registry_username - password: - from_secret: registry_password - ssh-agent-key: - from_secret: gitea_token + image: docker + commands: + - docker build -f docker-compose.staging.yml -t git.mifi.dev/mifi/mifi/auth:latest . + - docker push git.mifi.dev/mifi/mifi/auth:latest + volumes: + - name: dockersock + path: /var/run/docker.sock + - name: dockerconfig + path: /drone/grow/.docker/config.json +# - name: Publish Image +# image: plugins/docker +# settings: +# auto_tag: true +# squash: true +# repo: git.mifi.dev/mifi/auth +# context: mifi +# registry: git.mifi.dev +# username: +# from_secret: registry_username +# password: +# from_secret: registry_password +# ssh-agent-key: +# from_secret: gitea_token volumes: - name: dockersock path: /var/run/docker.sock @@ -177,10 +187,10 @@ steps: image: docker privileged: true commands: - - docker compose pull - - docker compose build --no-cache - - docker compose rm --stop - - docker compose up --wait + - docker compose -f docker-compose.staging.yml pull + - docker compose -f docker-compose.staging.yml build --no-cache + - docker compose -f docker-compose.staging.yml rm --stop + - docker compose -f docker-compose.staging.yml up --wait volumes: - name: env path: /drone/grow/.env diff --git a/Dockerfile b/Dockerfile index 0877960..65ab2af 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,4 +23,6 @@ WORKDIR /home/node/app COPY package*.json ./ RUN yarn install --frozen-lockfile --production COPY --from=0 /home/node/app/dist . +EXPOSE 9001 +EXPOSE 27017 CMD ["node","server/index.js"] diff --git a/dev.env b/dev.env index c9bae52..e40ac0d 100644 --- a/dev.env +++ b/dev.env @@ -6,20 +6,26 @@ ROUTE_PREFIX=/auth LOGIN_ROUTE=/login RESET_ROUTE=/reset +DB_ADMIN_USERNAME=root +DB_ADMIN_PASSWORD=password DB_USERNAME=user DB_PASSWORD=password DB_NAME=auth +MONGO_INITDB_ROOT_USERNAME=$DB_ADMIN_USERNAME +MONGO_INITDB_ROOT_PASSWORD=$DB_ADMIN_PASSWORD +MONGO_INITDB_DATABASE=$DB_NAME + SESSION_KEY=shjhakjfhfjdshjksdhfdshfhfduyeyb73te4 JWT_AUDIENCE=Grow.io JWT_ISSUER=Grow Latch -JWT_SECRET='Th!sIs a d3v3lopm3nt server $#cr¢T.' +JWT_SECRET=Th!sIs a d3v3lopm3nt server SEcr¢T. LOGIN_VALID_TIME=12H RESET_VALID_MINUTES=15 DEFAULT_TOKEN_DAYS=1 -CONTAINER_PREFIX=sso +CONTAINER_PREFIX=dev SERVICE_NAME=auth-service DB_TYPE=mongo diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml new file mode 100644 index 0000000..97de15d --- /dev/null +++ b/docker-compose.dev.yml @@ -0,0 +1,34 @@ +version: '3.8' + +services: + auth-service_mongo: + env_file: dev.env + container_name: ${CONTAINER_PREFIX:-dev}-auth-service_mongo + ports: + - 27017:27017 + networks: + - docknet + volumes: + # - /var/tmp/labs:/data/db + - ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro + restart: unless-stopped + image: mongo:latest + auth-service: + env_file: dev.env + build: . + container_name: ${CONTAINER_PREFIX:-dev}-auth-service + ports: + - 9000:9000 + environment: + - DB_HOST=${CONTAINER_PREFIX:-dev}-auth-service_mongo + networks: + - docknet + restart: unless-stopped + image: node:20-alpine + links: + - auth-service_mongo:${CONTAINER_PREFIX:-dev}-auth-service_mongo + depends_on: + - auth-service_mongo +networks: + docknet: + name: docknet diff --git a/docker-compose.yml b/docker-compose.staging.yml similarity index 100% rename from docker-compose.yml rename to docker-compose.staging.yml diff --git a/lib/constants/db.ts b/lib/constants/db.ts index 1ca920e..702dc6f 100644 --- a/lib/constants/db.ts +++ b/lib/constants/db.ts @@ -1,5 +1,5 @@ -export const DB_HOST = process.env.DB_HOST || 'mongodb'; +export const DB_HOST = process.env.DB_HOST || 'not_set'; export const DB_PORT = process.env.DB_PORT || 27017; -export const DB_USERNAME = process.env.DB_USERNAME || 'test'; -export const DB_PASSWORD = process.env.DB_PASSWORD || 'test'; -export const DB_NAME = process.env.DB_NAME || 'auth'; +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'; diff --git a/lib/constants/env.ts b/lib/constants/env.ts index 058e95b..f30245e 100644 --- a/lib/constants/env.ts +++ b/lib/constants/env.ts @@ -1,4 +1,4 @@ -export const PACKAGE_NAME = '@mifi/latch'; +export const PACKAGE_NAME = '@mifi/auth'; export const PORT = process.env.PORT || 9000; export const SESSION_KEY = process.env.SESSION_KEY || 'secret-key'; diff --git a/lib/server/controllers/auth.ts b/lib/server/controllers/auth.ts index 0211a0f..72ac52b 100644 --- a/lib/server/controllers/auth.ts +++ b/lib/server/controllers/auth.ts @@ -11,6 +11,12 @@ import { ErrorCodes, getErrorBody } from '../../constants/errors'; const routerOpts: Router.IRouterOptions = { prefix }; const router: Router = new Router(routerOpts); +router.get('/info', (ctx) => { + ctx.body = { + service: process.env.SERVICE_NAME, + }; +}); + router.post('/', async (ctx) => { const data = (await Auth.create(ctx.body)).save(); ctx.body = { success: true, data: { ...data, strategies: undefined } }; diff --git a/lib/server/index.ts b/lib/server/index.ts index 051a321..f54676e 100644 --- a/lib/server/index.ts +++ b/lib/server/index.ts @@ -1,12 +1,11 @@ -import dotenv from 'dotenv'; - import app from './app'; import { connection } from '../db'; import { PORT } from '../constants/env'; -dotenv.config(); - connection.then( - () => app.listen(PORT), - (err) => console.error('ERROR!', err), + () => { + app.listen(PORT); + console.log('LISTENING', process.env); + }, + (err) => console.error('SERVER ERROR!', { err, env: process.env }), ); diff --git a/mongo-init.js b/mongo-init.js new file mode 100644 index 0000000..99ec02b --- /dev/null +++ b/mongo-init.js @@ -0,0 +1,12 @@ +/* eslint-disable no-undef */ +db = db.getSiblingDB(process.env.DB_NAME || 'not_set'); +db.createUser({ + user: process.env.DB_USERNAME, + pwd: process.env.DB_PASSWORD, + roles: [ + { + role: 'readWrite', + db: process.env.DB_NAME, + }, + ], +}); diff --git a/package.json b/package.json index 15737dc..cb6a2dd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@mifi/auth", - "version": "0.0.24", + "version": "0.0.25", "author": "mifi (Mike Fitzpatrick)", "license": "MIT", "scripts": {