diff --git a/.drone.yml b/.drone.yml index 9c6f4d4..d8ef2d2 100644 --- a/.drone.yml +++ b/.drone.yml @@ -89,3 +89,39 @@ trigger: - main event: - push + +--- +kind: pipeline +type: docker +name: Deploy Pipeline + +platform: + os: linux + arch: arm64 + +steps: +- name: yarn-install + image: node + commands: + - cd /app + - cp /drone/src/package.json ./ + - cp /drone/src/yarn.lock ./ + - yarn install --frozen-lockfile + - cp -r /drone/src/* . + - yarn build + volumes: + - name: app-build-dir + path: /app-build +- name: Deploy Container + image: compose + commands: + - cd /app + - cp /app-build-dir/* . + - build + - up -d + volumes: + - name: app-build-dir + path: /app-build + volumes: + - name: app-build-dir + temp: {} diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..5791544 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,7 @@ +FROM node:latest +WORKDIR /app +COPY package.json . +RUN yarn install +COPY . . +RUN yarn build +CMD ["node", "dist/lib/server/index.js"] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..fb9052b --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,56 @@ +version: '3.8' + +services: + auth-service_mongo: + container_name: ${CONTAINER_PREFIX}auth-service_mongo + environment: + - ALLOW_EMPTY_PASSWORD=yes + - MONGODB_USERNAME=${DB_USER} + - MONGODB_PASSWORD=${DB_PASS} + - MONGODB_DATABASE=${DB_NAME} + networks: + - docknet + volumes: + - '/volume1/docker/labs/grow-auth/mongo:/data/db' + - '/Volume1/docker/labs/grow-auth/.env:./.env' + restart: unless-stopped + image: mongo + auth-service: + container_name: ${CONTAINER_PREFIX}auth-service + environment: + - PORT=${PORT} + - ROUTE_PREFIX=${ROUTE_PREFIX} + - LOGIN_ROUTE=${LOGIN_ROUTE} + - RESET_ROUTE=${RESET_ROUTE} + - DB_HOST=${CONTAINER_PREFIX}auth-service_mongo + - DB_USER=${DB_USER} + - DB_PASSWORD=${DB_PASS} + - DB_NAME=${DB_NAME} + - SESSION_KEY=${SESSION_KEY} + - JWT_AUDIENCE=${JWT_AUDIENCE} + - JWT_ISSUER=${JWT_ISSUER} + - JWT_SECRET=${JWT_SECRET} + - LOGIN_VALID_TIME=${LOGIN_VALID_TIME} + - RESET_VALID_MINUTES=${RESET_VALID_MINUTES} + - DEFAULT_TOKEN_DAYS=${DEFAULT_TOKEN_DAYS} + labels: + - 'traefik.enable=true' + - 'traefik.http.routers.grow.rule=Host(`${HOST}`)' + - 'traefik.http.routers.grow.rule=Path(`${ROUTE_PREFIX}`)' + - 'traefik.http.routers.grow.entrypoints=websecure' + - 'traefik.http.routers.grow.tls=true' + - 'traefik.http.routers.grow.tls.certresolver=letsencrypt' + - 'traefik.http.routers.grow.service=gitea' + - 'traefik.http.services.gitea.loadbalancer.server.port=${PORT}' + networks: + - docknet + volumes: + - '/Volume1/docker/.yarnrc.yml:./.yarnrc.yml' + - '/Volume1/docker/labs/grow-auth/.env:./.env' + restart: unless-stopped + image: node + depends_on: + - auth-service_mongo +networks: + docknet: + name: docknet diff --git a/lib/constants/env.ts b/lib/constants/env.ts index 1a240de..058e95b 100644 --- a/lib/constants/env.ts +++ b/lib/constants/env.ts @@ -1,6 +1,8 @@ export const PACKAGE_NAME = '@mifi/latch'; export const PORT = process.env.PORT || 9000; +export const SESSION_KEY = process.env.SESSION_KEY || 'secret-key'; + export const JWT_AUDIENCE = process.env.JWT_AUDIENCE || 'mifi.dev'; export const JWT_ISSUER = process.env.JWT_ISSUER || PACKAGE_NAME; export const JWT_SECRET = process.env.JWT_SECRET || 'secret'; diff --git a/lib/server/app.ts b/lib/server/app.ts index ebe227e..846e6fb 100644 --- a/lib/server/app.ts +++ b/lib/server/app.ts @@ -7,6 +7,7 @@ import passport from './passport'; import { performanceLogger, perfromanceTimer } from './middleware/performance'; import { errorHandler } from './middleware/errorHandler'; import { authRouter } from './controllers/auth'; +import { SESSION_KEY } from '../constants/env'; const app: Koa = new Koa(); @@ -16,7 +17,7 @@ app.use(performanceLogger); app.use(bodyparser()); app.use(cookie()); -app.keys = [process.env.SESSION_KEYS as string]; +app.keys = [SESSION_KEY]; app.use(session({}, app)); app.use(passport.initialize()); diff --git a/package.json b/package.json index 63a2303..1e232d0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@mifi/auth", - "version": "0.0.1", + "version": "0.0.2", "author": "mifi (Mike Fitzpatrick)", "license": "MIT", "scripts": {