index.js 1.2 KB

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