Estoy usando webpack-dev-server
para ejecutar una aplicación Nestjs dentro de un contenedor Docker. Todo está en funcionamiento, pero no puedo depurar la aplicación desde mi instancia de VS Code. Estoy tratando de exponer el puerto 9229 usando esta configuración en webpack.config.js
:
devServer: {
host: '0.0.0.0',
port: 9229,
},
Cuando ejecuto netstat -l
dentro del contenedor, puedo ver que el nodo no está escuchando el puerto 9229:
Estoy exponiendo el puerto 9229 en el Dockerfile y los archivos docker-compose. El Dockerfile:
FROM node:12.16.1-alpine
WORKDIR /usr/src/app
COPY package.json yarn.lock ./
RUN yarn
COPY . .
EXPOSE 3000
EXPOSE 9229
CMD [ "yarn", "run", "start:debug"]
Y el archivo docker-compose.yml:
version: '3.7'
services:
open-tuna-api:
image: opentunaapi
ports:
- 3000:3000
- 9229:9229
volumes:
- ./dist:/usr/src/app/dist
- ./:/usr/src/app
networks:
- open-tuna-network
expose:
- 9229
networks:
open-tuna-network:
Y este es el script que estoy usando para ejecutar la aplicación:
"start:debug": "webpack --config webpack.config.js && node --inspect=0.0.0.0:9229 node_modules/webpack-dev-server/bin/webpack-dev-server.js",
Mi configuración de inicio es la siguiente:
{
"name": "Attach",
"preLaunchTask": "compose-up",
"stopOnEntry": true,
"type": "node",
"request": "attach",
"port": 9229,
"cwd": "${workspaceFolder}", // the root where everything is based on
"localRoot": "${workspaceFolder}", // root of all server files
"remoteRoot": "/usr/src/app", // workspace path which was set in the dockerfile
"outFiles": ["${workspaceFolder}/dist/**/*.js"], // all compiled JavaScript files
"protocol": "inspector",
"restart": true,
"sourceMaps": true,
"trace": "verbose",
"address": "0.0.0.0",
"skipFiles": [
"<node_internals>/**"
],
}
Y cuando ejecuto esta configuración con el contenedor en funcionamiento, recibo un mensaje que dice que VS Code no se puede conectar al proceso.
Entonces, mi pregunta es: ¿hay alguna forma de depurar la aplicación JavaScript / TypeScript que se ejecuta webpack-dev-server
dentro de un contenedor Docker? ¿Qué hay de malo en mi entorno?
Gracias por la ayuda.
EDITAR
Aparentemente, mi problema no tiene relación con Docker, ya que puedo reproducirlo fuera del contenedor.
ports
. Probablemente no se inicie porque el servidor de inspección del nodo o el servidor de desarrollo webpack falla cuando intenta vincularse a: 9229, ya que ambos intentan vincularse al mismo puerto.
localhost
y 127.0.0.1
en la configuración de VS Code. Además, cambié el 9229
puerto a 9000
todos los archivos y el problema persiste.
webpack-dev-server
, y después de construir el paquete, el servidor de desarrollo debe evitar la webpack --config webpack.config.js
llamada. ¿Cuál es el archivo de entrada del servidor?
docker-compose ps
Muestra que seopen-tuna-api
ha9229:9229
atado en los puertos? Pruebe también cambiar la dirección en la configuración de vscode alocalhost
o127.0.0.1
.