使用Serverspec测试在非根用户上运行的Dockerfile
我有一个Dockerfile,它使用Jenkins Swarm插件旋转Jenkins从节点。我在这张图片中设置了一个非root用户“jenkins”。jenkins用户有nvm设置。我正在尝试使用serverspec测试这个Docker映像,但我似乎找不到在server spec文件中以非root用户身份运行命令的方法 这确认用户jenkins已安装:使用Serverspec测试在非根用户上运行的Dockerfile,docker,rspec,dockerfile,sudo,serverspec,Docker,Rspec,Dockerfile,Sudo,Serverspec,我有一个Dockerfile,它使用Jenkins Swarm插件旋转Jenkins从节点。我在这张图片中设置了一个非root用户“jenkins”。jenkins用户有nvm设置。我正在尝试使用serverspec测试这个Docker映像,但我似乎找不到在server spec文件中以非root用户身份运行命令的方法 这确认用户jenkins已安装: describe user('jenkins') do it { should exist } it { should be
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实现此功能的帮助。任何帮助都将不胜感激。这为我解决了问题。如果有人阅读这篇文章有更好的方法,请一定让我知道
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
错误信息是什么?@BMW当我做“whoami”时,我期待着“jenkins”,但我得到了根。在nvm版本中,我期望“0.33.0”,但我得到了回报“