【问题标题】:Testing Dockerfile which runs on non root user using Serverspec使用 Serverspec 测试在非 root 用户上运行的 Dockerfile
【发布时间】:2017-02-16 00:42:22
【问题描述】:

我有一个 Dockerfile,它使用 Jenkins Swarm 插件启动 Jenkins 从节点。我在这张图片中有一个非 root 用户“jenkins”设置。 jenkins 用户有 nvm 设置。我正在尝试使用 serverspec 测试此 Docker 映像,但我似乎找不到在服务器规范文件中以非 root 用户身份运行命令的方法。

这确认用户 jenkins 已安装:

  describe user('jenkins') do
    it { should exist }
    it { should belong_to_primary_group 'jenkins' }
  end

但我似乎无法完成这项工作:

  describe command('whoami') do
    let(:sudo_options) { '-u jenkins -i' }
    its(:stdout) { should match 'jenkins' }
  end

我什至尝试过这样的事情:

  describe command('sudo -u jenkins nvm --version') do
    its(:stdout) { should match(/0.33.0/) }
  end

寻求帮助以使这项工作与 serverspec 一起工作。任何帮助将不胜感激。

【问题讨论】:

  • 错误信息是什么?
  • @BMW 当我做“whoami”时,我期待“jenkins”,但我又找回了根。在 nvm --version 我期望“0.33.0”但我回来了“”

标签: docker rspec dockerfile sudo serverspec


【解决方案1】:

这为我解决了这个问题。如果有人阅读这篇文章有更好的方法,请告诉我。

  describe command("node --version") do
    its(:stdout) { should match(/5.10.0/) }
  end

  describe command("su - jenkins -c 'node --version'") do
    its(:stdout) { should match(/6.9.5/) }
  end

  describe command("su - jenkins -c 'nvm --version'") do
    its(:stdout) { should match(/0.33.0/) }
  end

  describe command("su - jenkins -c 'nvm use 4.7.3'") do
    its(:stdout) { should match(/4.7.3/) }
  end

【讨论】:

    猜你喜欢
    • 2021-02-15
    • 2021-03-06
    • 2017-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多