2015-10-04 10 views
11

Ich versuche, meine node.js Anwendung zu docken. Ich habe Dockerfile erstellt, ist unterhalb der Inhalt von DockerfileMungo in Docker Container installieren

# 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"] 

aber während der npm Befehl installieren, auf dem ich folgende Warnungen in den Protokollen sehe

> [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 

ich meinen Kopf seit 12 Stunden an der Wand am hämmern Ich habe fast alles im Internet durchsucht, aber ich kann den Grund dafür nicht herausfinden. Irgendwo lese ich, dass ich libkrb5-dev Paket brauche, also habe ich auch dieses Paket installiert, aber das Problem geht weiter.

Kann mir jemand erklären, was hier passiert? und wie kann ich das lösen?

Antwort

5

Dies ist nur eine Ausgabe von node-gyp. Sie können diese Nachrichten ignorieren, wenn Sie MongoDB Enterprise mit Kerberos-Authentifizierung nicht verwenden.

Trotzdem wird der docker build Befehl erfolgreich ausgeführt und Mungo wird auch funktionieren.

Die obige Ausgabe bezieht sich nur auf einige pragam-Anweisungen. Die Pragma-Anweisung wurde mit ANSI-C eingeführt, um Compiler-Optionen zu definieren.

Zum Beispiel haben Sie einen Blick auf:

../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; 

Diese einfach sagt, dass die Variable server_conf_flags in lib/kerberosgss.c definiert: 348: 19 nicht überall verwendet wird. Wenn Sie sich die source on github ansehen, ist das kein Problem.

Jeder C-Compiler behandelt diese pragam-Direktiven etwas anders, was absichtlich ist. Vielleicht hast du auf deinem lokalen Rechner einen anderen C-Compiler oder ein komplett anderes Betriebssystem?

Das ist also nichts zu befürchten.

+0

Ich weiß, das ist meine Frage, warum es diese Warnungen sind, diese Warnungen nicht da sind, wenn ich lokal installieren (nicht in Docker Bild) – Syed

+0

ich meine Antwort aktualisiert: Dies wird Entwicklungsdateien für die angegebenen Knoten Version installieren mit einigen mehr Infos über diese Pragma-Richtlinien. – PatrickD

+0

Ich benutze Mac für meine lokale und nach [dieser] (http://stackoverflow.com/questions/20171095/why-cant-i-check-my-version-of-gcc-compiler-on-os-x) Frage, Mac benutzt Clang. – Syed

1

Genau wie die andere Antwort brauchen Sie sich keine Gedanken über diese Warnung zu machen. Dies kommt für unbekannte Pragma-Definition zu GCC. Zum Beispiel:

../lib/kerberosgss.c:27:0: Warnung: Ignorieren Pragma Klirren Diagnose [-Wunknown-Pragmas] Pragma Klirren Diagnose Push

Diese Warnung Pops wegen der clang Pragma, die in unbekannt zu gcc. Wenn Sie die Warnungen immer noch löschen möchten, können Sie cflags festlegen, um diese Warnungen zu ignorieren. Um dies zu tun mit node-gyp, bearbeiten ~/.node-gyp/<node_version>/include/node/common.gypi:

die Zeile finden:

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

und ersetzen Sie es mit:

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

Dies ist, wo die Standard-Flags gespeichert werden. Beachten Sie die zwei zusätzlichen Flags, um die Warnungen zu deaktivieren.Im Andockfenster können Sie sed verwenden, um die cflags-Zeile durch die obigen zu ersetzen.

Und ich bin mir nicht sicher, warum Sie nicht die Warnungen in Ihrer lokalen Umgebung erhalten. Wahrscheinlich haben Sie diese Flags bereits gesetzt, weil Sie einen anderen Compiler als gcc verwenden oder die gcc-Version verwenden, die Sie verwenden.


Edit: Wenn Sie nicht sehen, das ~/.node-gyp/ Verzeichnis, diese Befehle zuerst ausgeführt.

npm install -g node-gyp 
node-gyp install