Skip to content

Instantly share code, notes, and snippets.

@edirpedro
Created December 19, 2025 20:40
Show Gist options
  • Select an option

  • Save edirpedro/1a97c8fc8ab7a30f72a0b20c8c94d5ea to your computer and use it in GitHub Desktop.

Select an option

Save edirpedro/1a97c8fc8ab7a30f72a0b20c8c94d5ea to your computer and use it in GitHub Desktop.
NPM Scripts rodando no Container

NPM Scripts rodando no Container

Sei que existe o Dev Container mas ele encapsula o VS Code completamente no container, isso resolve de um lado e atrapalha do outro, eu precisava apenas rodar os scripts NPM pelo container e esta tem sido a solução até o momento.

  • O container no exemplo é uma imagem WordPress e nela são adicionadas todas as ferramentas, assim como em .devcontainer;
  • Um perfil de terminal "Container" foi criado para dar acesso fácil;
  • O terminal de tarefas é redirecionado para tasks.sh onde o container é carregado e o comando é repassado;
  • É possível adaptar uma passagem livre em tasks.sh para as Tasks do VS Code;
  • Criando um script com prefixo host: é possível passar livremente e rodar o script na máquina local;

Estrutura

.dev
  compose.yaml
  tasks.sh (chmod +x)
wp-content
projeto.code-workspace
{
"folders": [
{
"name": "WP",
"path": "."
},
{
"name": "DEV",
"path": ".dev"
}
],
"settings": {
"terminal.integrated.profiles.osx": {
"Container": {
"path": "docker",
"args": [
"compose",
"--file=${workspaceFolder:DEV}/compose.yaml",
"exec",
"wordpress",
"bash"
]
}
},
"terminal.integrated.automationProfile.osx": {
"path": "${workspaceFolder:DEV}/tasks.sh",
"env": {
"WORKSPACE": "${workspaceFolder:WP}",
"CONTAINER": "wordpress"
}
}
}
}
#!/bin/bash
# Somente NPM Scripts, libera para Tasks
# if [[ ! ( "$2" == "npm run"* ) ]]; then
# bash "$@"
# exit 0
# fi
CWD=$(dirname "$0")
COMPOSE="$CWD/compose.yaml"
WORKDIR="/var/www/html${PWD#$WORKSPACE}"
# Script prefixado com "host:" executa localmente
if [[ ( "$2" == "npm run host:"* ) ]]; then
shift
exec $@
# Executa a tarefa no container
else
exec docker compose -f "$COMPOSE" exec -w "$WORKDIR" "$CONTAINER" bash "$@"
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment