Spaces:
Sleeping
Sleeping
File size: 1,340 Bytes
18ca829 5cdcd63 18ca829 5cdcd63 18ca829 5cdcd63 18ca829 5cdcd63 18ca829 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | FROM node:18-alpine
RUN apk add --no-cache git
RUN git clone https://github.com/schlagmichdoch/PairDrop.git /app && \
cd /app && npm install
RUN mkdir -p /gw && cd /gw && npm install http-proxy
RUN cat > /gw/gateway.js << 'GWEOF'
var http = require('http');
var httpProxy = require('/gw/node_modules/http-proxy');
var DOMAIN = process.env.DOMAIN || '';
var proxy = httpProxy.createProxyServer({ target: 'http://127.0.0.1:3001', ws: true });
proxy.on('error', function(e, req, res) { if (res && res.writeHead) { res.writeHead(502); res.end('502'); } });
function ok(req) { if (!DOMAIN) return true; var h = (req.headers['x-real-domain']||'')+'|'+(req.headers['x-forwarded-host']||'')+'|'+(req.headers['host']||''); return h.indexOf(DOMAIN) !== -1; }
var s = http.createServer(function(req, res) { if (ok(req)) { proxy.web(req, res); } else { res.writeHead(200,{'Content-Type':'text/plain'}); res.end('200 OK'); } });
s.on('upgrade', function(req, socket, head) { if (ok(req)) { proxy.ws(req, socket, head); } else { socket.destroy(); } });
s.listen(7860, function() { console.log('[GW] 7860'); });
GWEOF
RUN cat > /gw/start.sh << 'SHEOF'
#!/bin/sh
cd /app && PORT=3001 node index.js &
sleep 2
cd /gw && exec node gateway.js
SHEOF
RUN chmod +x /gw/start.sh
RUN chown -R node:node /app /gw
USER node
EXPOSE 7860
CMD ["/gw/start.sh"] |