2014-06-04 18 views
7

Ho battuto la testa contro il muro su questo per un po 'e ho bisogno di un piccolo aiuto.L'avvio di un contenitore finestra mobile con un'app node.js produce un errore; si lamenta del PERCORSO

Ho un contenitore finestra mobile creato da un file Docker. Quando cerco di eseguire tale contenitore (in modo interattivo [-i] o indipendente [-d]), produce il seguente errore:

2014/06/04 21:17:40 exec: "node": executable file not found in $PATH

Questo è il modo che sto cercando di avviare il contenitore (fatta generico per motivi di sicurezza):

sudo docker run -i -t -p port:port containername:containerversion node /path/to/node/app/nodeapp.js

ciò che è fastidioso e confuso è che quando faccio funzionare il contenitore senza che il comando aggiunto, sono in grado di cd nella directory/path/to/node/app ed eseguire:

node nodeapp.js

Questo funziona bene per me. Inoltre, quando paragono i contenuti del comando "quale nodo" e l'output di "echo $ PATH", vedo che tutto è kosher. Quindi, perché diamine si rifiuta di riconoscere che io sono il suo padrone e che dovrebbe fare ciò che dico?

+0

ne dite di usare il percorso assoluto del file eseguibile nodo del run docker? –

+0

Poiché esegue le attività nel file Docker come root, ho dovuto aggiungere ENV PATH al Dockerfile con lo stesso percorso dell'utente che alla fine avrei eseguito il contenitore come. – Jacob

risposta

4

nodejs dovrebbe funzionare.

Non so perché, ma ha installato nodejs non node nel mio caso.

+0

Questa era la soluzione per me ... Grazie! – kroonwijk

+0

'node' è più comune, anche se alcune installazioni del nodo useranno' nodejs', che è piuttosto scomodo. Assicurati di essere installato in un modo previsto. –

0

provare a eseguirlo così:

sudo docker run -i -t -p port:port containername:containerversion /path/to/node/bin/node /path/to/node/app/nodeapp.js 

deve essere possibile per aggiungerlo al vostro percorso, ma non so come. Ma anche se fosse possibile, ha ancora senso utilizzare il percorso completo come sopra, perché non si eseguirà accidentalmente un diverso node in questo modo.

1

Nella tua Dockerfile, assicurarsi che il WORKDIR è impostato e l'istruzione CMD si presenta come una delle seguenti opzioni:

CMD ["npm", "start"] o

CMD ["node", "nodeapp.js"]

Problemi correlati