当容器中 运行 时,创建下一个应用程序失败
create-next-app fails when run in container
我想在主机上的当前目录中创建一个新的 nextjs 应用程序,但不安装节点等。所以我 运行 一个像这样的容器
docker run --rm -it -v $(pwd):/app node:17.8.0 bash
whoami
显示我在容器中是 root。然后我运行容器里的这些命令
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
我不明白为什么我的权限被拒绝,因为我是 root。
跟host目录的volume mapping有关系,因为如果我运行没有volume mapping的container,命令就可以了
主机目录中的权限如下所示
drwxrwxr-x 2 hans hans 4096 Apr 9 10:35 .
drwxrwxr-x 11 hans hans 4096 Apr 9 10:21 ..
为什么它会失败,我怎样才能让它工作?
我的建议是 运行 立即使用正确的 UID/GID 容器,这样您以后就不必修复权限。这也可能解决最初的问题。
docker run -u "$(id -u):$(id -g)" ...
我想在主机上的当前目录中创建一个新的 nextjs 应用程序,但不安装节点等。所以我 运行 一个像这样的容器
docker run --rm -it -v $(pwd):/app node:17.8.0 bash
whoami
显示我在容器中是 root。然后我运行容器里的这些命令
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
我不明白为什么我的权限被拒绝,因为我是 root。
跟host目录的volume mapping有关系,因为如果我运行没有volume mapping的container,命令就可以了
主机目录中的权限如下所示
drwxrwxr-x 2 hans hans 4096 Apr 9 10:35 .
drwxrwxr-x 11 hans hans 4096 Apr 9 10:21 ..
为什么它会失败,我怎样才能让它工作?
我的建议是 运行 立即使用正确的 UID/GID 容器,这样您以后就不必修复权限。这也可能解决最初的问题。
docker run -u "$(id -u):$(id -g)" ...