在 ubuntu docker 中创建用户,而不是使用 root
Create user in ubuntu docker instead using root
我正在根据 ubuntu (testing:latest
) 创建自定义 docker 图像。我想 运行 对流星应用程序进行一些单元测试。
FROM ubuntu:16.04
RUN apt-get update -y && \
apt-get install -yqq --no-install-recommends apt-transport-https ca-certificates curl nodejs-legacy && \
apt-get clean && apt-get autoclean && apt-get autoremove && \
curl https://install.meteor.com/ | sh && \
meteor npm install eslint eslint-plugin-react && \
apt-get remove -y apt-transport-https ca-certificates curl && \
rm -rf /var/lib/apt/lists/*
我正在使用 gitlab CI 使用 docker 运行ner。所以我的 yml 文件看起来像
stages:
- test
lint:
image: testing:latest
stage: test
script:
- /node_modules/.bin/eslint --ext .js --ext .jsx .
except:
- master
unit:
image: testing:latest
stage: test
script:
- whoami
- meteor test --driver-package=practicalmeteor:mocha-console-runner
except:
- master
运行 whoami
显示当前用户是 root
。因此 meteor test 不是 运行ning,因为它不应该与 root
一起使用
You are attempting to run Meteor as the 'root' superuser. 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 command
in a build process (CI, etc.), or you are absolutely sure you know what you are
doing, set the METEOR_ALLOW_SUPERUSER environment variable or pass
--allow-superuser to proceed.
Even with METEOR_ALLOW_SUPERUSER or --allow-superuser, permissions in your app
directory will be incorrect if you ever attempt to perform any Meteor tasks as
a normal user. If you need to fix your permissions, run the following command
from the root of your project:
sudo chown -Rh <username> .meteor/local
如何使用其他用户?我必须在 docker 文件中这样做吗?还是我必须在yml文件中添加一些命令?
您可以按正常 Ubuntu 方式完成 RUN useradd <username>
然后 USER <username>
和 运行 任务。
The USER
instruction sets the user name or UID to use when running the image and for any RUN
, CMD
and ENTRYPOINT
instructions that follow it in the Dockerfile
.
你也可以看看这个SO答案:Switching users inside Docker image to a non-root user
我正在根据 ubuntu (testing:latest
) 创建自定义 docker 图像。我想 运行 对流星应用程序进行一些单元测试。
FROM ubuntu:16.04
RUN apt-get update -y && \
apt-get install -yqq --no-install-recommends apt-transport-https ca-certificates curl nodejs-legacy && \
apt-get clean && apt-get autoclean && apt-get autoremove && \
curl https://install.meteor.com/ | sh && \
meteor npm install eslint eslint-plugin-react && \
apt-get remove -y apt-transport-https ca-certificates curl && \
rm -rf /var/lib/apt/lists/*
我正在使用 gitlab CI 使用 docker 运行ner。所以我的 yml 文件看起来像
stages:
- test
lint:
image: testing:latest
stage: test
script:
- /node_modules/.bin/eslint --ext .js --ext .jsx .
except:
- master
unit:
image: testing:latest
stage: test
script:
- whoami
- meteor test --driver-package=practicalmeteor:mocha-console-runner
except:
- master
运行 whoami
显示当前用户是 root
。因此 meteor test 不是 运行ning,因为它不应该与 root
You are attempting to run Meteor as the 'root' superuser. 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 command
in a build process (CI, etc.), or you are absolutely sure you know what you are
doing, set the METEOR_ALLOW_SUPERUSER environment variable or pass
--allow-superuser to proceed.
Even with METEOR_ALLOW_SUPERUSER or --allow-superuser, permissions in your app
directory will be incorrect if you ever attempt to perform any Meteor tasks as
a normal user. If you need to fix your permissions, run the following command
from the root of your project:
sudo chown -Rh <username> .meteor/local
如何使用其他用户?我必须在 docker 文件中这样做吗?还是我必须在yml文件中添加一些命令?
您可以按正常 Ubuntu 方式完成 RUN useradd <username>
然后 USER <username>
和 运行 任务。
The
USER
instruction sets the user name or UID to use when running the image and for anyRUN
,CMD
andENTRYPOINT
instructions that follow it in theDockerfile
.
你也可以看看这个SO答案:Switching users inside Docker image to a non-root user