在部署之前 运行 在 docker 中进行测试的最佳方法是什么

What is the best way to run test in docker before deploying

我当前的设置是我在我的 VPS 中设置了我的 git 裸存储库,称之为 staging

所以,当我这样做时:

git push staging staging

我重新运行我的 docker,挂载目录参考 git-workdirs。

现在,我还想在 docker 中添加 运行 测试,如果出现问题,将其回滚到之前的(工作)提交。 [1]

最好的方法是什么[1]

我当前的挂钩如下所示:

$worktree = /my/work/directory
$gitdir = /my/repo/dir.git
$containername = mycontainer
git --work-tree=$worktree  --git-dir=$gitdir checkout staging -f
cd $worktree
docker stop $containername || true
docker kill $containername || true
docker rm $containername || true
docker run -d -p $port1:$port2 --name $containername -v $worktree:/root/src -it $imagename bash -c $runscript

(可能不会直接回答你的问题,但是用不同的方法,你不需要重新发明轮子)

我是用Kitchen test做的,可以启动一个新的test instance,可以是vmware, ec2 instance等,也可以是不同的驱动(vagrant, ec2, docker等,当然,你不能在docker中测试docker,你可以运行上面完全相同的代码自动验证。

这里是Getting started guide

如果一切设置正确,一个命令kitchen test到运行所有部署,测试并直接销毁实例。

测试用例正在使用 serverspec , which you can easily test the instance running, port listening, etc. For detail about the test case, refer serverspec resource types

您也可以手动运行以下步骤来逐步解决问题

kitchen test = kitchen create + kitchen converge + kitchen verify + kitchen destroy