2016-06-10 23 views
5

Sto tentando di eseguire Nightmare.js sul server. Sono ben consapevole del fatto che è senza testa su Linux e richiede xvfb. Quello che non capisco è il motivo per cui continuo a ottenere il seguente errore in modalità DEBUG:Nightmare.js con Docker

nightmare queuing process start +0ms 
    nightmare queueing action "useragent" +3ms 
    nightmare queueing action "goto" for https://news.ycombinator.com +2ms 
    nightmare queueing action "cookies" +1ms 
    nightmare queueing action "goto" for https://news.ycombinator.com/login +0ms 
    nightmare queueing action "type" +1ms 
    nightmare queueing action "type" +0ms 
    nightmare queueing action "click" +0ms 
    nightmare queueing action "wait" +1ms 
    nightmare queueing action "goto" for https://news.ycombinator.com/item?id=11878025 +0ms 
    nightmare queueing action "click" +0ms 
    nightmare queueing action "wait" +1ms 
    nightmare running +0ms 
    nightmare electron child process exited with code 2: undefined +25ms 

Ecco la mia Dockerfile:

FROM node:latest 

RUN apt-get update &&\ 
    apt-get install -y \ 
    xvfb \ 
    x11-xkb-utils \ 
    xfonts-100dpi \ 
    xfonts-75dpi \ 
    xfonts-scalable \ 
    xfonts-cyrillic \ 
    x11-apps \ 
    clang \ 
    libdbus-1-dev \ 
    libgtk2.0-dev \ 
    libnotify-dev \ 
    libgnome-keyring-dev \ 
    libgconf2-dev \ 
    libasound2-dev \ 
    libcap-dev \ 
    libcups2-dev \ 
    libxtst-dev \ 
    libxss1 \ 
    libnss3-dev \ 
    gcc-multilib \ 
    g++-multilib 

RUN mkdir -p /usr/src/app 
WORKDIR /usr/src/app 

COPY . /usr/src/app 

RUN npm install 

CMD DEBUG=nightmare* xvfb-run --server-args="-screen 0 1024x768x24" node tux.js -s hn -m create -p 11878025 

Qualche idea? L'aiuto sarebbe molto apprezzato.

+0

Quale versione di Nightmare stai usando? – Ross

+0

Potresti eseguirlo con DEBUG = incubo: *, elettrone: * e vedere se ottieni qualche messaggio di log utile? – khattam

+0

Con l'ultima versione di nightmare.js (2.5.1), ottengo il seguente risultato nel mio post sopra. –

risposta

2

Che cosa si può fare è di mettere tutti i file in una sottodirectory, dicono app/e nel tuo Dockerfile fare:

ADD app/ /usr/src/app/ 

naturalmente nella cartella app ci saranno env.sh, package.json, tux.js e la directory lib

In questo modo se è necessario aggiungere più file, non è necessario aggiungerli manualmente nel file docker.

PS: Funziona anche con COPIA

0

L'errore che si legge undefined indica che manca un pacchetto. Dopotutto se un pacchetto non è installato, come può essere definito? Ciò significherebbe che non hai costruito il contenitore correttamente e penso di vedere il colpevole.

RUN mkdir -p /usr/src/app 
WORKDIR /usr/src/app 

*COPY . /usr/src/app* 

RUN npm install 

Secondo to the dockerfile documentation, il comando copia COPIA file, non directory che hai specificato con COPY . /usr/src/app. Invece, provare a sostituire . con * in quanto ciò specificherà TUTTI i file nella directory corrente che si decide di avviare il docker build da.

+0

senza fortuna. l'esecuzione di COPY */usr/src/app copiava ogni file (non la directory) nella directory/user/src/app. Chiudi (credo), ma senza fortuna. –

+0

sei riuscito a far funzionare la tua app senza usare un contenitore? Quindi, solo costruendolo sulla tua macchina locale hai avuto successo? Non è una buona idea cercare di ottenere app incomplete in container docker in quanto ciò potrebbe solo aggiungere un nuovo livello di confusione. Dubito che la tua app sia incompleta ma non fa male sapere. – Jouster500

+0

Funziona alla grande localmente. Nessun problema lì. Sta ottenendo l'ambiente senza head setup e funzionando correttamente - Immagino che mi manchi una sorta di dipendenza ... non sono sicuro di cosa esattamente come l'output non sia abbastanza dettagliato. –

1

Ok, quindi ho capito qual era il problema. Apparentemente, non mi piaceva la sintassi della copia nel mio Dockerfile. Ho finito per usare ADD e ha funzionato.

ADD /lib /usr/src/app/lib 
ADD env.sh /usr/src/app 
ADD package.json /usr/src/app 
ADD tux.js /usr/src/app 
+2

È possibile limitare il numero di livelli creati utilizzando solo un'istruzione ADD: 'ADD env.sh package.json tux.js/usr/src/app' –