import http from 'http' const createProxy = ({ name, listenPort, targetHost, targetPort }) => { http .createServer((req, res) => { const proxyReq = http.request( { hostname: targetHost, port: targetPort, path: req.url, method: req.method, headers: req.headers, }, (proxyRes) => { res.writeHead(proxyRes.statusCode || 502, proxyRes.headers) proxyRes.pipe(res) } ) proxyReq.on('error', (err) => { res.statusCode = 502 res.end(`Bad gateway: ${err.message}`) }) req.pipe(proxyReq) }) .listen(listenPort, '127.0.0.1', () => { console.log(`${name} proxy listening on 127.0.0.1:${listenPort} -> ${targetHost}:${targetPort}`) }) } const wizardPort = Number(process.env.WIZARD_PORT || 8080) const backendPort = Number(process.env.BACKEND_PORT || 8000) const frontendPort = Number(process.env.FRONTEND_PORT || 3000) createProxy({ name: 'wizard', listenPort: wizardPort, targetHost: process.env.WIZARD_HOST || 'wizard', targetPort: wizardPort, }) createProxy({ name: 'backend', listenPort: backendPort, targetHost: process.env.BACKEND_HOST || 'backend', targetPort: backendPort, }) createProxy({ name: 'frontend', listenPort: frontendPort, targetHost: process.env.FRONTEND_HOST || 'frontend', targetPort: frontendPort, })