在docker容器中安装mongoose

Sye*_*yed 11 mongoose mongodb node.js docker dockerfile

我试图将我的node.js应用程序停靠.我创建了一个Dockerfile,下面是Dockerfile的内容

# 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"]
Run Code Online (Sandbox Code Playgroud)

但是在运行npm install命令时,我在日志中看到以下警告

> kerberos@0.0.14 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
Run Code Online (Sandbox Code Playgroud)

我从12个小时开始在墙上敲我的头,我几乎在互联网上搜索了所有内容,但我无法找到发生这种情况的原因.在某处我读到我需要libkrb5-dev包,所以我也安装了该包,但问题仍然存在.

任何人都可以向我解释这里发生了什么?以及如何解决这个问题?

Pat*_*ckD 5

这只是node-gyp的输出.如果不将MongoDB Enterprise与Kerberos身份验证一起使用,则可以忽略此消息.

然而,docker build命令将成功运行,mongoose也将起作用.

上面的输出只是一些pragam指令.使用ANSI-C引入了pragma语句来定义编译器选项.

比如看看:

../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;
Run Code Online (Sandbox Code Playgroud)

这只是告诉你,server_conf_flagslib/kerberosgss.c:348:19中定义的变量不会在任何地方使用.如果你看一下github上的源码,这不是问题.

每个C编译器都有意地处理这些pragam指令略有不同.也许在你的本地机器上你有一个不同的C编译器或一个完全不同的操作系统?

所以这没什么好担心的.