index.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #!/usr/bin/env node
  2. const logger = require('./logger').global;
  3. async function appStart () {
  4. const migrate = require('./migrate');
  5. const setup = require('./setup');
  6. const app = require('./app');
  7. const apiValidator = require('./lib/validator/api');
  8. const internalCertificate = require('./internal/certificate');
  9. const internalIpRanges = require('./internal/ip_ranges');
  10. return migrate.latest()
  11. .then(setup)
  12. .then(() => {
  13. return apiValidator.loadSchemas;
  14. })
  15. .then(internalIpRanges.fetch)
  16. .then(() => {
  17. internalCertificate.initTimer();
  18. internalIpRanges.initTimer();
  19. const server = app.listen(3000, () => {
  20. logger.info('Backend PID ' + process.pid + ' listening on port 3000 ...');
  21. process.on('SIGTERM', () => {
  22. logger.info('PID ' + process.pid + ' received SIGTERM');
  23. server.close(() => {
  24. logger.info('Stopping.');
  25. process.exit(0);
  26. });
  27. });
  28. });
  29. })
  30. .catch((err) => {
  31. logger.error(err.message);
  32. setTimeout(appStart, 1000);
  33. });
  34. }
  35. try {
  36. appStart();
  37. } catch (err) {
  38. logger.error(err.message, err);
  39. process.exit(1);
  40. }