Estou usando webpack-dev-server
para executar um aplicativo Nestjs dentro de um contêiner do Docker. Tudo está instalado e funcionando, mas não consigo depurar o aplicativo da minha instância do VS Code. Estou tentando expor a porta 9229 usando esta configuração no webpack.config.js
:
devServer: {
host: '0.0.0.0',
port: 9229,
},
Quando corro netstat -l
dentro do contêiner, vejo que o nó não está escutando a porta 9229:
Estou expondo a porta 9229 nos arquivos Dockerfile e docker-compose. O arquivo Docker:
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"]
E o arquivo 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:
E este é o script que estou usando para executar o aplicativo:
"start:debug": "webpack --config webpack.config.js && node --inspect=0.0.0.0:9229 node_modules/webpack-dev-server/bin/webpack-dev-server.js",
Minha configuração de inicialização é a seguinte:
{
"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>/**"
],
}
E quando executo essa configuração com o contêiner instalado, estou recebendo uma mensagem dizendo que o VS Code não pode se conectar ao processo.
Portanto, minha pergunta é: existe uma maneira de depurar o aplicativo JavaScript / TypeScript em execução webpack-dev-server
dentro de um contêiner do Docker? O que há de errado no meu ambiente?
Obrigado pela ajuda.
EDITAR
Aparentemente, meu problema não tem relação com o Docker, pois posso reproduzi-lo fora do contêiner.
docker-compose ps
mostram queopen-tuna-api
tem9229:9229
ligado nos portos? Tente também alterar o endereço na configuração do vscode paralocalhost
ou127.0.0.1
.ports
. Provavelmente, falha ao iniciar porque o servidor inspetor do nó ou o servidor de desenvolvimento webpack falha ao tentar se conectar a: 9229 - pois ambos tentam se conectar à mesma porta.localhost
e127.0.0.1
na configuração do código VS. Além disso, mudei a9229
porta para9000
todos os arquivos e o problema persiste.webpack-dev-server
e, depois de criar o pacote, o servidor dev deve evitar awebpack --config webpack.config.js
chamada. qual é o arquivo de entrada do servidor?Respostas:
Dê uma olhada na sua configuração e certifique-se de incluir o
program
campo. E aponte para o arquivo certo emnode_modules
.Isso deve fazer você ir.
Se você quiser mais informações sobre isso, há uma conversa mais longa que você pode achar útil - confira este comentário no repositório principal do GitHub do webpack-dev-server .
fonte