在 ddev 中从 Dockerfile 运行纱线



这是如何在 DDEV Web 容器中添加和使用 nvm 的后续内容?

我的 docker 文件现在看起来像这样:

ARG BASE_IMAGE
FROM $BASE_IMAGE
ENV NVM_DIR=/usr/local/nvm
ENV NODE_DEFAULT_VERSION=v8.16.1
RUN curl -sL https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh -o install_nvm.sh
RUN mkdir -p $NVM_DIR && bash install_nvm.sh
RUN echo "source $NVM_DIR/nvm.sh" >>/etc/profile
RUN bash -ic "nvm install $NODE_DEFAULT_VERSION && nvm use $NODE_DEFAULT_VERSION"
RUN chmod -R ugo+w $NVM_DIR
RUN npm install -g foundation-cli
RUN npm install -g gulp-cli
RUN yarn --cwd foundation-src install

最后一行返回错误:Service 'web' failed to build: The command '/bin/sh -c yarn --cwd foundation-src install' returned a non-zero code: 1'

当我ddev ssh然后运行yarn --cwd foundation-src install时,它会完成工作(在foundation-src文件夹中运行纱线(。

我也尝试过RUN (cd foundation-src; yarn install;)但也没有运气。无论如何,我更喜欢第一个命令。但是这是怎么回事呢?为什么我可以从容器内部运行内容,但不能从 dockerfile 运行内容?

你的命令是RUN yarn --cwd foundation-src install- 它假设当前目录下有一个子目录"foundation-src"。

但是 Dockerfile 运行了很长时间,很久很久以前,您的源就已经有用了。容器尚未运行,未挂载任何内容。因此,您不能执行需要存在源代码的操作。

由于此命令似乎需要您的源代码存在,因此我认为您最好将其作为启动后钩子,也许

hooks:
post-start:
- exec: "yarn --cwd foundation-src install"

由于像yarn install这样的操作是不定期发生的,因此也很容易ddev exec yarn --cwd foundation-src install,也很容易创建自定义命令来在需要时执行此操作。

相关内容

  • 没有找到相关文章

最新更新