diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..7542fa3 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,5 @@ +.git +config.json +logs +certs +cdn diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..c95a54a --- /dev/null +++ b/Dockerfile @@ -0,0 +1,15 @@ +FROM node:14-alpine + +RUN apk add --no-cache python3 make gcc g++ +WORKDIR /app + +COPY "docker/entrypoint.sh" . + +COPY package*.json . +RUN npm install + +COPY . . + +VOLUME [ "/app/config.json" ] + +CMD ["sh", "entrypoint.sh"] diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh new file mode 100644 index 0000000..b433b09 --- /dev/null +++ b/docker/entrypoint.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +files='config.json certs/nex/datastore/secret.key certs/nex/secret.key certs/nex/public.pem' + +for file in $files; do + if [ ! -f $file ]; then + echo "$PWD/$file file does not exist. Please mount and try again." + exit 1 + fi +done + +exec node src/server.js diff --git a/src/database.js b/src/database.js index 388554d..90758fa 100644 --- a/src/database.js +++ b/src/database.js @@ -3,7 +3,7 @@ const bcrypt = require('bcrypt'); const util = require('./util'); const { PNID } = require('./models/pnid'); const { Server } = require('./models/server'); -const { mongoose: mongooseConfig } = require('./config.json'); +const { mongoose: mongooseConfig } = require('../config.json'); const { uri, database, options } = mongooseConfig; let connection; diff --git a/src/mailer.js b/src/mailer.js index e0d93ca..9180270 100644 --- a/src/mailer.js +++ b/src/mailer.js @@ -1,5 +1,5 @@ const nodemailer = require('nodemailer'); -const config = require('./config'); +const config = require('../config.json'); const transporter = nodemailer.createTransport(config.email); diff --git a/src/server.js b/src/server.js index e62ee49..779221e 100644 --- a/src/server.js +++ b/src/server.js @@ -6,7 +6,7 @@ const xmlparser = require('./middleware/xml-parser'); const database = require('./database'); const util = require('./util'); const logger = require('../logger'); -const config = require('./config.json'); +const config = require('../config.json'); const { http: { port } } = config; const app = express(); diff --git a/src/services/api/routes/v1/register.js b/src/services/api/routes/v1/register.js index 71b4816..4a7311f 100644 --- a/src/services/api/routes/v1/register.js +++ b/src/services/api/routes/v1/register.js @@ -8,7 +8,7 @@ const { PNID } = require('../../../../models/pnid'); const { NEXAccount } = require('../../../../models/nex-account'); const database = require('../../../../database'); const util = require('../../../../util'); -const config = require('../../../../config'); +const config = require('../../../../../config'); const PNID_VALID_CHARACTERS_REGEX = /^[\w\-\.]*$/gm; const PNID_PUNCTUATION_START_REGEX = /^[\_\-\.]/gm; diff --git a/src/util.js b/src/util.js index 4649728..bde0f0d 100644 --- a/src/util.js +++ b/src/util.js @@ -2,7 +2,7 @@ const crypto = require('crypto'); const NodeRSA = require('node-rsa'); const fs = require('fs-extra'); const aws = require('aws-sdk'); -const config = require('./config.json'); +const config = require('../config.json'); const spacesEndpoint = new aws.Endpoint('nyc3.digitaloceanspaces.com'); const s3 = new aws.S3({