在 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> 和 运行 任务。

From the Docker.Io Docs

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