Skip to content

Commit

Permalink
fix(docker): universal config
Browse files Browse the repository at this point in the history
  • Loading branch information
polonel committed Feb 18, 2019
1 parent a318545 commit 35acf04
Show file tree
Hide file tree
Showing 6 changed files with 84 additions and 40 deletions.
23 changes: 19 additions & 4 deletions app.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
========================================================================
**/

var _ = require('lodash')
var async = require('async')
var path = require('path')
var fs = require('fs')
Expand Down Expand Up @@ -168,9 +169,9 @@ function launchServer (db) {
winston.debug('Starting MailCheck...')
mailCheck.init(settings)
})
} else {
return next()
}

return next()
})
},
function (next) {
Expand Down Expand Up @@ -221,9 +222,23 @@ function launchServer (db) {
if (process.env.MEMORYLIMIT) {
memLimit = process.env.MEMORYLIMIT
}

var env = { FORK: 1, NODE_ENV: global.env }
if (isDocker) {
var envDocker = {
TD_MONGODB_SERVER: process.env.TD_MONGODB_SERVER,
TD_MONGODB_PORT: process.env.TD_MONGODB_PORT,
TD_MONGODB_USERNAME: process.env.TD_MONGODB_USERNAME,
TD_MONGODB_PASSWORD: process.env.TD_MONGODB_PASSWORD,
TD_MONGODB_DATABASE: process.env.TD_MONGODB_DATABASE
}

env = _.merge(env, envDocker)
}

var n = fork(path.join(__dirname, '/src/cache/index.js'), {
execArgv: ['--max-old-space-size=' + memLimit],
env: { FORK: 1, NODE_ENV: global.env }
env: env
})

global.forks.push({ name: 'cache', fork: n })
Expand Down Expand Up @@ -271,4 +286,4 @@ function dbCallback (err, db) {
}
}

if (configExists || isDocker) start()
if (!nconf.get('install') && (configExists || isDocker)) start()
19 changes: 19 additions & 0 deletions src/controllers/install.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ installController.index = function (req, res) {
content.layout = false

content.bottom = 'Trudesk v' + pkg.version
content.isDocker = process.env.TRUDESK_DOCKER || false

res.render('install', content)
}
Expand Down Expand Up @@ -298,6 +299,24 @@ installController.install = function (req, res) {
})
},
function (next) {
if (!process.env.TRUDESK_DOCKER) return next()
var S = require('../models/setting')
var installed = new S({
name: 'installed',
value: true
})

installed.save(function (err) {
if (err) {
winston.error('DB Error: ' + err.message)
return next('DB Error: ' + err.message)
}

return next()
})
},
function (next) {
if (process.env.TRUDESK_DOCKER) return next()
// Write Configfile
var fs = require('fs')
var configFile = path.join(__dirname, '../../config.json')
Expand Down
10 changes: 5 additions & 5 deletions src/database/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,11 @@ var winston = require('winston')

var db = {}
var mongoConnectionUri = {
server: process.env.MONGODB_SERVER || nconf.get('mongo:host'),
port: process.env.MONGODB_PORT || nconf.get('mongo:port') || '27017',
username: process.env.MONGODB_USERNAME || nconf.get('mongo:username'),
password: process.env.MONGODB_PASSWORD || nconf.get('mongo:password'),
database: process.env.MONGODB_DATABASE ? 'trudesk_' + process.env.MONGODB_DATABASE : nconf.get('mongo:database')
server: process.env.TD_MONGODB_SERVER || nconf.get('mongo:host'),
port: process.env.TD_MONGODB_PORT || nconf.get('mongo:port') || '27017',
username: process.env.TD_MONGODB_USERNAME || nconf.get('mongo:username'),
password: process.env.TD_MONGODB_PASSWORD || nconf.get('mongo:password'),
database: process.env.TD_MONGODB_DATABASE ? 'trudesk_' + process.env.MONGODB_DATABASE : nconf.get('mongo:database')
}

var CONNECTION_URI = ''
Expand Down
6 changes: 6 additions & 0 deletions src/helpers/hbs/helpers.js
Original file line number Diff line number Diff line change
Expand Up @@ -617,6 +617,12 @@ var helpers = {
return options.inverse(this)
},

isNot: function (obj, options) {
if (!(_.isUndefined(obj) || _.isNull(obj) || obj === true)) return options.fn(this)

return options.inverse(this)
},

split: function (arr, sep) {
var str = ''
_.each(arr, function (obj) {
Expand Down
2 changes: 2 additions & 0 deletions src/migration/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,8 @@ migrations.run = function (callback) {
getDatabaseVersion(function (err, dbVer) {
if (err) return next(err)
if (semver.satisfies(dbVer, '1.0.6')) migrateUserRoles(next)

return next()
})
}
],
Expand Down
64 changes: 33 additions & 31 deletions src/views/install.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -276,38 +276,40 @@
<button class="btn md-btn md-btn-wave md-btn-success" data-next>Lets Start</button>
</div>

<div class="slide hide">
<h2 style="margin-bottom: 25px;">MongoDB Connection</h2>
<p style="text-align: left;">
We've got to store the data somewhere. We've chosen MongoDB as our backend storage.
Just enter your connection information below and lets get connected.
</p>
<form id="mongoConnection" class="uk-form-stacked uk-clearfix">
<div class="uk-margin-medium-bottom">
<label for="mongo-server">Server</label>
<input id="mongo-server" name="mongo-server" class="md-input" type="text" value="localhost" />
</div>
<div class="uk-margin-medium-bottom">
<label for="mongo-port">Port</label>
<input id="mongo-port" name="mongo-port" class="md-input" type="text" value="27017"/>
</div>
<div class="uk-margin-medium-bottom">
<label for="mongo-username">Username</label>
<input id="mongo-username" name="mongo-username" class="md-input" type="text" value="trudesk"/>
</div>
<div class="uk-margin-medium-bottom">
<label for="mongo-password">Password</label>
<input id="mongo-password" name="mongo-password" class="md-input" type="password" value="#TruDesk1$" />
</div>
<div class="uk-margin-medium-bottom">
<label for="mongo-database">Database</label>
<input id="mongo-database" name="mongo-database" class="md-input" type="text" value="trudesk"/>
</div>
<button class="btn md-btn md-btn-wave md-btn-primary" type="button" id="test-mongo-connection">Test Connection!</button>
</form>
{{#isNot isDocker}}
<div class="slide hide">
<h2 style="margin-bottom: 25px;">MongoDB Connection</h2>
<p style="text-align: left;">
We've got to store the data somewhere. We've chosen MongoDB as our backend storage.
Just enter your connection information below and lets get connected.
</p>
<form id="mongoConnection" class="uk-form-stacked uk-clearfix">
<div class="uk-margin-medium-bottom">
<label for="mongo-server">Server</label>
<input id="mongo-server" name="mongo-server" class="md-input" type="text" value="localhost" />
</div>
<div class="uk-margin-medium-bottom">
<label for="mongo-port">Port</label>
<input id="mongo-port" name="mongo-port" class="md-input" type="text" value="27017"/>
</div>
<div class="uk-margin-medium-bottom">
<label for="mongo-username">Username</label>
<input id="mongo-username" name="mongo-username" class="md-input" type="text" value="trudesk"/>
</div>
<div class="uk-margin-medium-bottom">
<label for="mongo-password">Password</label>
<input id="mongo-password" name="mongo-password" class="md-input" type="password" value="#TruDesk1$" />
</div>
<div class="uk-margin-medium-bottom">
<label for="mongo-database">Database</label>
<input id="mongo-database" name="mongo-database" class="md-input" type="text" value="trudesk"/>
</div>
<button class="btn md-btn md-btn-wave md-btn-primary" type="button" id="test-mongo-connection">Test Connection!</button>
</form>
<a href="https://www.mongodb.com/" class="no-ajaxy" target="_blank">What is MongoDB?</a>
</div>
{{/isNot}}

<a href="https://www.mongodb.com/" class="no-ajaxy" target="_blank">What is MongoDB?</a>
</div>
<div class="slide hide">
<h2 style="margin-bottom: 25px;">Existing Database?</h2>
<p style="text-align: left; margin-bottom: 20px;">
Expand Down

0 comments on commit 35acf04

Please sign in to comment.