在部署之前 运行 在 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,你可以运行上面完全相同的代码自动验证。
如果一切设置正确,一个命令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
我当前的设置是我在我的 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,你可以运行上面完全相同的代码自动验证。
如果一切设置正确,一个命令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