Estoy tratando de convertir esta aplicación a docker pero recibo este error.
Aquí está mi archivo express.js
const express = require("express"); const app = express(); const portNumber = 3000; const sourceDir = "dist"; const expressStaticGzip = require("express-static-gzip"); app.use( "/", expressStaticGzip(sourceDir, { enableBrotli: true, orderPreference: ["br", "gz"], setHeaders: function(res, path) { res.setHeader("Cache-Control", "public, max-age=31536000"); } }) ); app.listen(portNumber, () => { console.log(`Express web server started: http://localhost:${portNumber}`); console.log(`Serving content from /${sourceDir}/`); });aquí está mi dockerfile
FROM node:14 WORKDIR /usr/src/app COPY package*.json ./ RUN npm install COPY . . CMD [ "node", "express.js" ]Se agradece la ayuda.
Este es un error muy común. Cuando está transmitiendo dentro de un contenedor docker, generalmente tiene que escuchar en el host 0.0.0.0 , no solo en localhost . Si escucha en la ventana acoplable localhost , no podrá enrutar el tráfico desde fuera del contenedor a la interfaz de bucle invertido dentro del contenedor.
Puede solucionar esto actualizando su código expreso para escuchar en 0.0.0.0 . creo que es esto:
app.listen(portNumber, "0.0.0.0", () => { console.log(`Express web server started: http://0.0.0.0:${portNumber}`); console.log(`Serving content from /${sourceDir}/`); });Luego deberá ejecutar el archivo acoplable con algo como:
docker build -t node-app . docker run -p 3000:3000 node-appEstaba ejecutando la aplicación angular usando el comando ng serve y enfrentaba el mismo problema.
Porque el servidor de desarrollo en vivo escucha http://localhost:4200 de forma predeterminada.
de lo que usé el comando ng serve --host 0.0.0.0 para ejecutar el proyecto angular y eso resolvió mi problema.