Azure DevOps - 自动运行Rails迁移。

问题描述 投票:0回答:1

我创建了一个Azure devops项目,从Github部署我的代码。我的项目是一个运行在 Docker 上的 Rails 应用。当我创建 Azure DevOps 项目时,它为我创建了 CICD 管道。部署成功了,但我想不通如何在我们部署时自动迁移数据库。我知道我可以手动进行,但我宁愿不要,因为我们可能会在部署时忘记。

我试着在 "Post Deployment Actions "中运行以下命令。

  • rake db:migrate
  • bundle exec rake db:migrate
  • rbenv exec bundle exec rake db:migrate
  • docker-compose run web rake db:migrate

我也生成了自己的kuduscript(使用kuduscript)来添加迁移的行,但是没有成功。我不知道是因为它没有读到我的部署脚本,还是那一行没有工作。

我是不是遗漏了什么?我是不是应该试着想办法通过Docker来迁移呢?我看了所有这些链接,但它们都是手动运行迁移。

https:/docs.microsoft.comen-usazureapp-servicecontainersquickstart-ruby。https:/medium.comparis-rbdeploying-your-rails-postgresql-app-on-microsoft-azure-180f8a9fab47。https:/docs.microsoft.comen-usazureapp-servicecontainerstutorial-ruby-postgres-app。

ruby-on-rails azure docker deployment rails-migrations
1个回答
0
投票

因此,不知道你是否曾经想通了这一点,但我只是不得不为我正在进行的迁移做这件事。根据我所发现的情况,最好的方法是在你的发布管道中设置一个阶段,就像这样。

阶段设置

基本上在哪里。

  • 你的服务连接登录到了容器注册表中
  • 将刚刚建立的图像推送到注册表中
  • 使用docker运行命令,然后用所有必要的环境变量和其他需要正确运行的东西来运行你的镜像。
  • 然后,如果需要的话,你可以使用另一个任务来运行docker exec bundle exec rake db:migrate。

如果迁移任务成功运行,它应该退出0,允许你在最新的标记映像上运行你的应用服务,同时已经完成了正确的数据库更改。

© www.soinside.com 2019 - 2024. All rights reserved.