最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

使用Dockerfile时如何刷新shell?

运维笔记admin10浏览0评论

使用Dockerfile时如何刷新shell?

使用Dockerfile时如何刷新shell?

我正在尝试构建一个可以使用Azure功能的Dockerfile。由于库问题,在尝试使用alpine:3.9构建它失败后,我换成了ubuntu:18.04。现在我有一个问题,我无法安装nvm(节点版本管理器),以便我可以安装node。我的Dockerfile在下面。我设法安装nvm但现在,在尝试使用nvm时,我无法安装我想要的节点版本。问题可能与刷新shell有关,但这很棘手,因为看起来Docker继续使用它输入的原始shell来运行下一个构建阶段。有关如何刷新shell的任何建议,以便nvm可以有效地工作?

FROM ubuntu:18.04

RUN apt update && apt upgrade -y && apt install -qq -y --no-install-recommends \
    python-pip \
    python-setuptools \
    wget \
    build-essential \
    libssl-dev

RUN pip install azure-cli

RUN wget -qO- .33.0/install.sh | bash 

RUN . /root/.nvm/nvm.sh && nvm install 10.14.1 && node

ENTRYPOINT ["/bin/bash"]
回答如下:

您通常不需要像Docker镜像中的nvm这样的版本管理器。由于Docker映像只打包一个应用程序,并且由于它有自己的独立文件系统,因此您只需安装所需的单个版本的Node即可。

我要尝试的第一件事就是安装标准Ubuntu软件包具有的任何版本的Node(在Ubuntu 18.04,looks like 8.11中)。虽然Node版本之间存在一些变化,但大多数情况下语言和核心库都非常稳定。

RUN apt update && apt-install nodejs

或者,如果你需要更新的东西,有official Debian packages:

RUN curl -sSL https://deb.nodesource/gpgkey/nodesource.gpg.key | apt-key add - \
 && echo "deb https://deb.nodesource/node_10.x cosmic main" > /etc/apt/sources.list.d/nodesource.list \
 && apt update \
 && apt install nodejs

这将为您提供该主要版本的Node的当前版本(截至本文撰写时,10.15.1)。

如果你真的需要特定版本的Node,那就有official binary packages。我可能会写:

FROM ubuntu:18.04
ARG node_version=10.14.1
RUN apt-get update \
 && DEBIAN_FRONTEND=noninteractive \
    apt-get install --no-install-recommends --assume-yes \
      ca-certificates \
      curl \
      xz-utils
RUN cd /usr/local \
 && curl -o- https://nodejs/dist/v${node_version}/node-v${node_version}-linux-x64.tar.xz \
  | tar xJf - --strip 1

...最后几行将Node tar包直接解压缩到/usr/local

发布评论

评论列表(0)

  1. 暂无评论