chore: initial deploy bundle
This commit is contained in:
@@ -1,40 +1,29 @@
|
||||
import knex from 'knex';
|
||||
import knexConfig from './db/knexfile';
|
||||
import app from './app';
|
||||
import { env, initEnv, getVaultToken } from './config/env';
|
||||
import { loadJwtKeysFromVault } from './services/jwt.service';
|
||||
import { env, initEnv } from './config/env';
|
||||
import { refreshAllKeys, startKeyRotation, stopKeyRotation } from './services/key-rotation.service';
|
||||
import { logger } from './lib/logger';
|
||||
|
||||
async function main() {
|
||||
logger.info(`Wallet service instance started with id ${logger.instanceId}`);
|
||||
|
||||
await initEnv();
|
||||
await refreshAllKeys();
|
||||
startKeyRotation();
|
||||
|
||||
// Load JWT public keys from Vault if available
|
||||
const vaultToken = getVaultToken();
|
||||
if (vaultToken && env.vault.addr) {
|
||||
await loadJwtKeysFromVault(
|
||||
env.vault.addr,
|
||||
vaultToken,
|
||||
env.vault.mount,
|
||||
env.vault.jwtKidPath,
|
||||
env.vault.jwtKidsPrefix,
|
||||
);
|
||||
} else {
|
||||
logger.warn('JWT keys not loaded: Vault not available');
|
||||
}
|
||||
|
||||
const db = knex(knexConfig);
|
||||
|
||||
logger.info('Running migrations...');
|
||||
await db.migrate.latest();
|
||||
logger.info('Migrations complete');
|
||||
|
||||
await db.destroy();
|
||||
|
||||
app.listen(env.port, () => {
|
||||
const server = app.listen(env.port, () => {
|
||||
logger.info(`Server running on port ${env.port}`);
|
||||
});
|
||||
|
||||
const shutdown = (signal: string) => {
|
||||
logger.info(`${signal} received, shutting down gracefully`);
|
||||
stopKeyRotation();
|
||||
server.close(() => process.exit(0));
|
||||
// Force exit if shutdown takes too long
|
||||
setTimeout(() => process.exit(1), 10_000).unref();
|
||||
};
|
||||
|
||||
process.on('SIGTERM', () => shutdown('SIGTERM'));
|
||||
process.on('SIGINT', () => shutdown('SIGINT'));
|
||||
}
|
||||
|
||||
main().catch((err) => {
|
||||
|
||||
Reference in New Issue
Block a user