代码之家  ›  专栏  ›  技术社区  ›  Hans Kilian

在容器中运行时,创建下一个应用程序失败

  •  1
  • Hans Kilian  · 技术社区  · 2 年前

    我想在主机上的当前目录中创建一个新的nextjs应用程序,但不安装node等。所以我运行了这样一个容器

    docker run --rm -it -v $(pwd):/app node:17.8.0 bash
    

    whoami 表明我是容器的根。然后我在容器中运行这些命令

    cd /app
    npx create-next-app@latest
    

    然后得到这个输出

    Need to install the following packages:
      create-next-app@latest
    Ok to proceed? (y) y
    sh: 1: create-next-app: Permission denied
    npm notice
    npm notice New minor version of npm available! 8.5.5 -> 8.6.0
    npm notice Changelog: https://github.com/npm/cli/releases/tag/v8.6.0
    npm notice Run npm install -g npm@8.6.0 to update!
    npm notice
    

    我不明白为什么我会被拒绝,因为我是根。

    它与主机目录的卷映射有关,因为如果我在没有卷映射的情况下运行容器,则该命令会起作用。

    主机目录中的权限如下所示

    drwxrwxr-x  2 hans hans 4096 Apr  9 10:35 .
    drwxrwxr-x 11 hans hans 4096 Apr  9 10:21 ..
    

    为什么会失败?我如何才能让它工作?

    1 回复  |  直到 2 年前
        1
  •  1
  •   The Fool    2 年前

    我的建议是立即使用正确的UID/GID运行容器,这样以后就不必修改权限。这也可能解决最初的问题。

    docker run -u "$(id -u):$(id -g)" ...