首页 > 解决方案 > 如何通过查找纱线来修复 docker 容器中的错误?

问题描述

我正在尝试设置 0x Launch Kit 前端(https://github.com/0xProject/0x-launch-kit-frontend)。我已经将它构建到一个带有 Dockerfile 的 docker 容器中:https ://github.com/0xProject/0x-launch-kit-frontend/blob/development/Dockerfile 。当尝试执行docker run image:name yarn build应该从本地 Docker 映像运行容器的命令时,我收到错误消息docker-entrypoint.sh: exec: line 32: yarn: not found 。为什么会这样,我该如何解决?这部分的 Dockerfile(上面链接)中似乎安装了 yarn:

RUN apk update && \
apk upgrade && \
apk add --no-cache --virtual build-dependencies bash git openssh python make g++ && \
yarn --no-cache || \
apk del build-dependencies && \
yarn cache clean

此外,这里是 docker-entrypoint.sh 文件的代码:

    #!/usr/bin/env sh
    # vim:sw=4:ts=4:et
    set -e
    if [ "$1" = "nginx" -o "$1" = "nginx-debug" ]; then
         if /usr/bin/find "/docker-entrypoint.d/" -mindepth 1 -maxdepth 1 -type f -print - 
           quit 2>/dev/null | read v; then
          echo "$0: /docker-entrypoint.d/ is not empty, will attempt to perform configuration"
          echo "$0: Looking for shell scripts in /docker-entrypoint.d/"
          find "/docker-entrypoint.d/" -follow -type f -print | sort -n | while read -r f; do
              case "$f" in
                   *.sh)
                   if [ -x "$f" ]; then
                       echo "$0: Launching $f";
                       "$f"
                   else
                       # warn on shell scripts without exec bit
                       echo "$0: Ignoring $f, not executable";
                   fi
                   ;;
               *) echo "$0: Ignoring $f";;
            esac
         done
    echo "$0: Configuration complete; ready for start up"
    else
        echo "$0: No files found in /docker-entrypoint.d/, skipping configuration"
    fi
    fi
    exec "$@"

标签: dockerdockerfileyarnpkg

解决方案


推荐阅读