"You have run Meteor as root" 在 docker 中构建流星应用程序时

"You have run Meteor as root" when building meteor app in docker

我使用

在 dockerfile 中构建了一个 Meteor 应用镜像
RUN ["meteor", "build", "--directory", "/meteor_app"]

遇到以下错误:

Step 11 : RUN meteor build --directory /meteor_app
---> Running in 2be64a8e21df
You are attempting to run Meteor as the "root" user. If you are developing,
this is almost certainly *not* what you want to do and will likely result in
incorrect file permissions. However, if you are running this in a build process
(CI, etc.) or you are absolutely sure you know what you are doing, add the
`--unsafe-perm` flag to this command to proceed.
The command 'meteor build --directory /meteor_app' returned a non-zero code: 1
{"exitCode":8, "message":"docker build failed or timeout "}

添加--unsafe--perm标志后:

RUN ["meteor", "--unsafe-perm", "build", "--directory", "/meteor_app"]

错误仍然存​​在:

Step 11 : RUN meteor --unsafe-perm build --directory /meteor_app
---> Running in c0e79de335c7
You have run Meteor as root. Your permissions in your app directory will be
incorrect if you ever attempt to perform any Meteor tasks as your non-root
user. You probably didn't want this, but you can fix it by running the
following from the root of your project:
sudo chown -Rh <username> .meteor/local
'/meteor_app' is not a Meteor command. See 'meteor --help'.
The command 'meteor --unsafe-perm build --directory /meteor_app' returned a non-zero code: 1
{"exitCode":8, "message":"docker build failed or timeout "}

如何解决?

这个错误发生在 Meteor 1.4.2 之后,但我没有找到它的任何文档。

谢谢!

您可以通过在您的容器中创建一个用户,使用 USER 命令和 运行 meteor 从那里切换到它来解决这个问题。这也是一种比 运行 一切都以根用户身份更好的做法。

显然是出于安全原因禁止根构建的自动流星更新...

解决了运行 以 root 用户身份从 meteor 的应用程序根目录执行以下命令:

export METEOR_NO_RELEASE_CHECK=true
curl https://install.meteor.com/?release=1.4.1.3 | sh

注意:您可以指定您选择的流星释放。

More info about this issue