在 Dockerfile 中安装节点?

新手上路,请多包涵

我是 AWS elastic beanstalk 的用户,我有一个小问题。我想用less+node 构建我的CSS 文件。但是在使用 jenkins 构建时,我不知道如何在我的 dockerfile 中安装节点。

这是我在 docker 中使用的安装包。我会很高兴有任何建议。

 FROM php:5.6-apache

# Install PHP5 and modules along with composer binary
RUN apt-get update
RUN apt-get -y install \
    curl \
    default-jdk \
    git \
    libcurl4-openssl-dev \
    libpq-dev \
    libmcrypt-dev \
    libpq5 \
    npm \
    node \
    zlib1g-dev \
    libfreetype6-dev \
    libjpeg62-turbo-dev \
    libpng12-dev

RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/

RUN docker-php-ext-install curl json mbstring opcache pdo_mysql zip gd exif sockets mcrypt

# Install pecl
RUN pecl install -o -f memcache-beta \
    && rm -rf /tmp/pear \
    && echo 'extension=memcache.so' > /usr/local/etc/php/conf.d/memcache.ini

在此之后,我正在使用代码运行我的 entrypoint.sh

 #!/usr/bin/env sh

composer run-script post-install-cmd --no-interaction

chmod 0777 -R /var/app/app/cache
chmod 0777 -R /var/app/app/logs

exec apache2-foreground

但是后来我遇到了这个错误

 Error Output: [2016-04-04 11:23:44] assetic.ERROR: The template ":tmp:module.html.twig" contains an error: A template that extends another one cannot have a body in ":tmp:module.ht
  ml.twig" at line 7.

但是当我以这种方式安装在 Docker 容器节点中时

apt-get install git-core curl build-essential openssl libssl-dev
 git clone https://github.com/nodejs/node.git
 cd node
 ./configure
 make
 sudo make install
 node -v

我可以构建我的 CSS。所以问题是..当我用 Jenkins 构建它时,上面的这个安装如何在我的 Dockerfile 中安装?

原文由 Delirium 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 309
2 个回答

运行 apt-get install node 不会安装 Node.js ,因为这不是您要的包。

如果你运行 apt-cache info node 你可以看到你正在安装的是一个“业余分组无线电节点程序(过渡包)”

您应该按照 Node.js 安装说明 通过包管理器进行安装。

或者,如果您喜欢从 git 构建,您可以在 Docker 中执行此操作:

 RUN apt-get install -y git-core curl build-essential openssl libssl-dev \
 && git clone https://github.com/nodejs/node.git \
 && cd node \
 && ./configure \
 && make \
 && sudo make install

原文由 Nathaniel Waisbrot 发布,翻译遵循 CC BY-SA 4.0 许可协议

我认为这稍微好一点。

 ENV NODE_VERSION=16.13.0
RUN apt install -y curl
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
ENV NVM_DIR=/root/.nvm
RUN . "$NVM_DIR/nvm.sh" && nvm install ${NODE_VERSION}
RUN . "$NVM_DIR/nvm.sh" && nvm use v${NODE_VERSION}
RUN . "$NVM_DIR/nvm.sh" && nvm alias default v${NODE_VERSION}
ENV PATH="/root/.nvm/versions/node/v${NODE_VERSION}/bin/:${PATH}"
RUN node --version
RUN npm --version

请注意nvm 是 node.js 的版本管理器,设计为按用户安装,并按 shell 调用。 nvm 适用于任何符合 POSIX 的 shell(sh、dash、ksh、zsh、bash),特别是在这些平台上:unix、macOS 和 windows WSL。

原文由 Nathan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题