2015-10-04 37 views
11

Sto cercando di rendere ancorata l'applicazione node.js. Ho creato un Dockerfile, al di sotto sono i contenuti di Dockerfileinstallare mangusta nel contenitore docker

# Official node base image 
FROM node:0.12 

# Bundle app source 
COPY . /src 

RUN apt-get update && apt-get install -y --no-install-recommends libkrb5-dev supervisor \ 
    && cd /src \ 
    && npm install \ 
    && rm -rf /var/lib/apt/lists/* 

# copy the supervisor conf file 
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf 

# Exclude npm cache from the image 
VOLUME /root/.npm 

# expose environment variable 
EXPOSE 3300 

# start supervisor 
CMD ["/usr/bin/supervisord"] 

ma durante l'esecuzione del NPM comando install vedo seguenti avvertenze nei registri

> [email protected] install /rate-my-ride-users-api/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/node_modules/kerberos 
> (node-gyp rebuild) || (exit 0) 

make: Entering directory '/rate-my-ride-users-api/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/node_modules/kerberos/build' 
    CXX(target) Release/obj.target/kerberos/lib/kerberos.o 
    CXX(target) Release/obj.target/kerberos/lib/worker.o 
    CC(target) Release/obj.target/kerberos/lib/kerberosgss.o 
../lib/kerberosgss.c:27:0: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas] 
#pragma clang diagnostic push 
^ 
../lib/kerberosgss.c:28:0: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas] 
#pragma clang diagnostic ignored "-Wdeprecated-declarations" 
^ 
../lib/kerberosgss.c: In function 'authenticate_gss_client_wrap': 
../lib/kerberosgss.c:348:19: warning: variable 'server_conf_flags' set but not used [-Wunused-but-set-variable] 
    char buf[4096], server_conf_flags; 
       ^
../lib/kerberosgss.c: At top level: 
../lib/kerberosgss.c:687:0: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas] 
#pragma clang diagnostic pop 

sto sbattere la testa sul muro dal lunedì 12 ore , Ho quasi cercato tutto su internet, ma non sono in grado di scoprire il motivo per cui questo sta accadendo. Da qualche parte ho letto che ho bisogno del pacchetto libkrb5-dev così ho installato il pacchetto, ma il problema persiste.

Qualcuno può spiegarmi cosa sta succedendo qui? e come posso risolvere questo?

risposta

5

Questo è solo un output di node-gyp. È possibile ignorare questi messaggi se non si utilizza MongoDB Enterprise con l'autenticazione Kerberos.

Tuttavia, il comando docker build verrà eseguito correttamente e anche la mangusta funzionerà.

L'output sopra riportato riguarda solo alcune direttive pragam. L'istruzione pragma è stata introdotta con ANSI-C per definire le opzioni del compilatore.

Per esempio un'occhiata a:

../lib/kerberosgss.c: In function 'authenticate_gss_client_wrap': 
../lib/kerberosgss.c:348:19: warning: variable 'server_conf_flags' set but not used [-Wunused-but-set-variable] 
char buf[4096], server_conf_flags; 

Questo solo ti dice, che la variabile server_conf_flags definito in lib/kerberosgss.c: 348: 19 non viene utilizzato da nessuna parte. Se si guarda allo source on github, questo non è un problema.

Ogni compilatore C gestisce queste direttive pragam leggermente diverse che è intenzionalmente. Forse sul tuo computer locale hai un C-compilatore diverso o un OS completamente diverso?

Quindi questo non è nulla di cui preoccuparsi.

+0

So che questa, la mia domanda è perché ci sono questi avvertimenti, questi avvertimenti non sono lì quando installo localmente (immagine finestra mobile non in) – Syed

+0

Ho aggiornato la mia risposta con qualche informazione in più su queste direttive pragma – PatrickD

+0

Sto usando mac per il mio locale e come per [questo] (http://stackoverflow.com/questions/20171095/why-cant-i-check-my-version-of-gcc-compiler-on-os-x) domanda, mac usa clang. – Syed

1

Proprio come l'altra risposta citata, non è necessario preoccuparsi di questi avvisi. Questi arrivano per definizione pragma sconosciuta a gcc. Per esempio:

../lib/kerberosgss.c:27:0: avvertimento: ignorando #pragma clang diagnostica [-Wunknown-pragma] #pragma clang spinta diagnostica

pops questo avvertimento a causa del pragma clang che in sconosciuto a gcc.

Se si desidera eliminare gli avvisi, è possibile impostare cflags per ignorare questi avvisi. Per fare questo con node-gyp, modificare ~/.node-gyp/<node_version>/include/node/common.gypi:

trovare la linea:

'cflags': [ '-Wall', '-Wextra', '-Wno-unused-parameter', ], 

e sostituirlo con:

'cflags': [ '-Wall', '-Wextra', '-Wno-unused-parameter', '-Wno-unknown-pragmas','-Wno-unused-but-set-variable', ], 

Questo è dove le bandiere di default sono memorizzati. Nota i due flag extra per disabilitare gli avvertimenti.Nella finestra mobile, è possibile utilizzare sed per sostituire la linea cflags con quanto sopra.

E non sono sicuro del motivo per cui non si ricevono gli avvisi nel proprio ambiente locale. Molto probabilmente perché stai usando un compilatore diverso da gcc o potrebbe essere la versione di gcc che stai usando, hai già impostato questi flag.


Edit: Se non vedi la directory ~/.node-gyp/, eseguire questi comandi prima. Questo installerà file di sviluppo per la versione nodo specificato:

npm install -g node-gyp 
node-gyp install 
Problemi correlati