e797d188ee
Add Express gateway, ecosystem config, and one-click install with native PostgreSQL, Node, and Python venv on port 23566. Co-authored-by: Cursor <cursoragent@cursor.com>
62 lines
1.6 KiB
JavaScript
62 lines
1.6 KiB
JavaScript
const path = require('path')
|
|
const fs = require('fs')
|
|
|
|
const root = path.resolve(__dirname, '../..')
|
|
const envPath = path.join(root, '.env')
|
|
|
|
function loadEnv() {
|
|
const env = { NODE_ENV: 'production' }
|
|
if (!fs.existsSync(envPath)) return env
|
|
for (const line of fs.readFileSync(envPath, 'utf8').split('\n')) {
|
|
const trimmed = line.trim()
|
|
if (!trimmed || trimmed.startsWith('#')) continue
|
|
const idx = trimmed.indexOf('=')
|
|
if (idx === -1) continue
|
|
const key = trimmed.slice(0, idx).trim()
|
|
let value = trimmed.slice(idx + 1).trim()
|
|
if (
|
|
(value.startsWith('"') && value.endsWith('"')) ||
|
|
(value.startsWith("'") && value.endsWith("'"))
|
|
) {
|
|
value = value.slice(1, -1)
|
|
}
|
|
env[key] = value
|
|
}
|
|
return env
|
|
}
|
|
|
|
const env = loadEnv()
|
|
const webPort = env.WEB_PORT || '23566'
|
|
const apiPort = env.API_PORT || '8000'
|
|
const venvPython = path.join(root, 'backend', 'venv', 'bin', 'python')
|
|
|
|
module.exports = {
|
|
apps: [
|
|
{
|
|
name: 'grade-api',
|
|
cwd: path.join(root, 'backend'),
|
|
script: venvPython,
|
|
args: `-m uvicorn app.main:app --host 127.0.0.1 --port ${apiPort}`,
|
|
interpreter: 'none',
|
|
env: {
|
|
...env,
|
|
UPLOAD_DIR: env.UPLOAD_DIR || path.join(root, 'uploads'),
|
|
},
|
|
max_restarts: 10,
|
|
restart_delay: 5000,
|
|
},
|
|
{
|
|
name: 'grade-web',
|
|
cwd: path.join(root, 'deploy', 'pm2'),
|
|
script: 'server.js',
|
|
env: {
|
|
...env,
|
|
WEB_PORT: webPort,
|
|
API_TARGET: env.API_TARGET || `http://127.0.0.1:${apiPort}`,
|
|
},
|
|
max_restarts: 10,
|
|
restart_delay: 3000,
|
|
},
|
|
],
|
|
}
|