703d941f23
- Update sequence a bit optimized. - Dependency updates. - Edge case on repo/branch selection handled. - More default templates. Thanks to @SaraVieira
56 lines
1.7 KiB
JavaScript
56 lines
1.7 KiB
JavaScript
require('dotenv').config()
|
|
const { program } = require('commander')
|
|
const fastify = require('fastify')()
|
|
const { schema } = require('../api/schema')
|
|
const shell = require('shelljs')
|
|
const user = shell.exec('whoami', { silent: true }).stdout.replace('\n', '')
|
|
|
|
program.version('0.0.1')
|
|
program
|
|
.option('-d, --debug', 'Debug outputs.')
|
|
.option('-c, --check', 'Only checks configuration.')
|
|
.option('-t, --type <type>', 'Deploy type.')
|
|
|
|
program.parse(process.argv)
|
|
|
|
const options = program.opts()
|
|
if (options.check) {
|
|
checkConfig().then(() => {
|
|
console.log('Config: OK')
|
|
}).catch((err) => {
|
|
console.log('Config: NOT OK')
|
|
console.error(err)
|
|
process.exit(1)
|
|
})
|
|
} else {
|
|
if (user !== 'root') {
|
|
console.error(`Please run as root! Current user: ${user}`)
|
|
process.exit(1)
|
|
}
|
|
shell.exec(`docker network create ${process.env.DOCKER_NETWORK} --driver overlay`, { silent: !options.debug })
|
|
shell.exec('docker build -t coolify -f install/Dockerfile .')
|
|
if (options.type === 'all') {
|
|
shell.exec('docker stack rm coollabs-coolify', { silent: !options.debug })
|
|
} else if (options.type === 'coolify') {
|
|
shell.exec('docker service rm coollabs-coolify_coolify')
|
|
} else if (options.type === 'proxy') {
|
|
shell.exec('docker service rm coollabs-coolify_proxy')
|
|
}
|
|
if (options.type !== 'upgrade') {
|
|
shell.exec('set -a && source .env && set +a && envsubst < install/coolify-template.yml | docker stack deploy -c - coollabs-coolify', { silent: !options.debug, shell: '/bin/bash' })
|
|
}
|
|
}
|
|
|
|
function checkConfig () {
|
|
return new Promise((resolve, reject) => {
|
|
fastify.register(require('fastify-env'), {
|
|
schema,
|
|
dotenv: true
|
|
})
|
|
.ready((err) => {
|
|
if (err) reject(err)
|
|
resolve()
|
|
})
|
|
})
|
|
}
|