首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用已配置的节点包版本构建Docker映像

使用已配置的节点包版本构建Docker映像
EN

Stack Overflow用户
提问于 2020-04-02 13:55:58
回答 1查看 295关注 0票数 1

我想要构建一个Docker映像,其中包含已安装的节点包。如果在Dockerfile中省略或硬编码包版本,则一切都正常(@14.0.0):

代码语言:javascript
复制
FROM stefanscherer/node-windows:12.16.1-nanoserver-1909
RUN npm install -g @sitecore-jss/sitecore-jss-cli@14.0.0

生成命令和结果:

docker build -t sitecore-jss-cli:14.0.0-nanoserver-1909 .

代码语言:javascript
复制
Successfully built 1c0ebbcd5be2
Successfully tagged sitecore-jss-cli:14.0.0-nanoserver-1909

但是,当版本作为参数传递时(为了能够构建任何版本),就会发生错误。请看更新后的Dockerfile

代码语言:javascript
复制
ARG SITECOREJSS_VERSION
FROM stefanscherer/node-windows:12.16.1-nanoserver-1909
RUN npm install -g @sitecore-jss/sitecore-jss-cli@${SITECOREJSS_VERSION}

带有参数和错误的命令:

docker build --build-arg SITECOREJSS_VERSION=14.0.0 -t sitecore-jss-cli:14.0.0-nanoserver-1909 .

代码语言:javascript
复制
...
npm ERR! code EINVALIDTAGNAME
npm ERR! Invalid tag name "${SITECOREJSS_VERSION}": Tags may not have any characters that encodeURIComponent encodes.

看来这个论点需要用某种方式来逃避。知道怎么解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-02 14:01:25

你有两个问题:

  1. 只有在ARG行本身中才能访问FROM块外部的FROM。在本例中,由于不需要使用--build-arg作为FROM的一部分,请将其移到内部: 来自stefanscherer/node-windows:12.16.1-nanoserver-1909 ARG SITECOREJSS_VERSION ..。 如果您需要在FROM和Dockerfile的其他地方使用它,则需要明确说明这一点: ARG SITECOREJSS_VERSION .ARG SITECOREJSS_VERSION ..。
  2. Interpolation 按照GitHub上的这个问题,如果要在Windows中的命令中进行插值,则需要使用%: 运行npm安装@sitecore-jss/sitecore-jss-cli@%SITECOREJSS_VERSION% -g

因此,完整的工作版本将是:

代码语言:javascript
复制
FROM stefanscherer/node-windows:12.16.1-nanoserver-1909
ARG SITECOREJSS_VERSION
RUN npm install -g @sitecore-jss/sitecore-jss-cli@%SITECOREJSS_VERSION%
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60993260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档