Подтвердить что ты не робот

Установить мангуст в докер-контейнере

Я пытаюсь подключиться к моему приложению 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"]

но во время выполнения команды установки npm я вижу следующие предупреждения в журналах

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

Я стучу головой о стену с 12 часов, я почти искал все в Интернете, но я не могу узнать причину, по которой это происходит. Где-то я прочитал, что мне нужен пакет libkrb5-dev, поэтому я также установил этот пакет, но проблема продолжает.

Может кто-нибудь объяснить мне, что здесь происходит? и как я могу это разрешить?

4b9b3361

Ответ 1

Это всего лишь выход из node -gyp. Вы можете игнорировать эти сообщения, если вы не используете MongoDB Enterprise с аутентификацией Kerberos.

Тем не менее команда docker build будет успешно запущена, и mongoose также будет работать.

Вышеприведенный вывод касается некоторых директив pragam. Инструкция pragma была введена с ANSI-C для определения параметров компилятора.

Например, посмотрите:

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

Это просто говорит вам, что переменная server_conf_flags, определенная в lib/kerberosgss.c: 348: 19, нигде не используется. Если вы посмотрите на источник на github, это не проблема.

Каждый C-компилятор обрабатывает эти директивы pragam, несколько отличающиеся от намеренно. Может быть, на вашей локальной машине у вас есть другой C-компилятор или совершенно другая ОС?

Так что это не о чем беспокоиться.

Ответ 2

Как и в случае с другим ответом, вам не нужно беспокоиться об этом предупреждении. Это относится к неизвестному определению прагмы gcc. Например:

../lib/kerberosgss.c: 27: 0: предупреждение: игнорирование #pragma clang diagnostic [-Wunknown-pragmas] #pragma clang диагностический толчок

Это предупреждение появляется из-за clang прагмы, которая неизвестна gcc.

Если вы все еще хотите избавиться от предупреждений, вы можете установить cflags, чтобы игнорировать эти предупреждения. Чтобы сделать это с помощью node-gyp, отредактируйте ~/.node-gyp/<node_version>/include/node/common.gypi:

Найдите строку:

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

и замените его на:

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

Здесь хранятся флаги по умолчанию. Обратите внимание на два дополнительных флажка, чтобы отключить предупреждения. В докере вы можете использовать sed для замены строки cflags выше.

И я не уверен, почему вы не получаете предупреждения в своей локальной среде. Скорее всего, потому, что вы используете другой компилятор, отличный от gcc или может быть версией gcc, которую вы используете, уже установлены эти флаги.


Изменить: Если вы не видите каталог ~/.node-gyp/, сначала выполните эти команды. Это установит файлы разработки для указанной версии node:

npm install -g node-gyp
node-gyp install