如何使用 Jhipster、Docker、Gitlab 和 Heroku 构建、测试和部署
How to build, test and deploy using Jhipster, Docker, Gitlab and Heroku
我是 Jhipster 和 Docker 的新手,我需要一些帮助来了解如何在我的 Heroku 实例上构建和部署我的应用程序的基础知识。当我和一个朋友一起工作时,我们可能需要某种集成平台,例如 Gitlab,它也可以作为我们的代码版本控制和存储库。
这是我们目前所做的:
- 生成了一个整体应用程序并在本地对其进行了测试(工作正常,感谢 Jhipster 使它变得如此简单)。
- 将其推送到我们的 gitlab 存储库。
- 在我们的应用程序的根目录下创建了一个 Docker 文件夹并在里面启动了
docker compose
。
我们认为接下来应该做的事情:
- 按照此示例使用 .gitlab-ci.yml 文件配置构建 http://docs.gitlab.com/ce/ci/yaml/README.html
- Link 以某种方式将我们的 Heroku 云服务器连接到 GitLab。
但我还有一些疑问:
- 我们应该将构建 docker 图像的任务留给 gitlab 吗?
- 我经常听说 Docker hub 和 Docker Cloud,但我仍然不明白我的情况,我错了吗?
- 我不确定如何充分发挥 heroku 的潜力。这部分有什么建议吗?
总而言之,我想从我的应用程序创建一个 Docker 图像,构建它并将它发送到我的服务器。我考虑使用 Docker、Gitlab 和 Heroku,但我热衷于任何其他有助于我们拥有快速、稳健和高效开发周期的建议。
谢谢,
这里有不同的方法...至少重要的是您的发布管道是由 CI 触发的,而不是手动触发的。
一开始,是的,GitLab应该负责构建镜像。这些可以存储在 GitLab Container registry (which is avaible in the latest GitLab versions) or the heroku container registy 里面。两者都是私人 docker 注册中心!无论您选择哪一个,您都会获得如何登录到该注册表以推送到该注册表的指南。
我在工作中使用 GitLab 注册表。我使用图像 "xetys/java-8-docker" 将 GitLab CI Runner 配置为 运行。注意,运行ner 必须 运行 才能在 运行 docker 里面。使用此命令启动 运行ner
docker run -d --name gitlab-runner --restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
gitlab/gitlab-runner:latest
然后你可以在 before_script
部分的 gitlab CI 中安装 heroku,以定义一个 "heroku deploy" 任务和一个 "docker push" 任务。
最后,您可以使用 "when: on_success" 让您的部署阶段依赖于最近阶段的成功,以便根据您的图像触发部署。
还有一种方法可以让您的 CI 挂钩到 heroku,从而创建一个由 heroku 维护的可视化部署管道。我从来没有这样做过,所以我不能就此给出任何有意义的建议。
希望我能以某种方式提供帮助。
我是 Jhipster 和 Docker 的新手,我需要一些帮助来了解如何在我的 Heroku 实例上构建和部署我的应用程序的基础知识。当我和一个朋友一起工作时,我们可能需要某种集成平台,例如 Gitlab,它也可以作为我们的代码版本控制和存储库。
这是我们目前所做的:
- 生成了一个整体应用程序并在本地对其进行了测试(工作正常,感谢 Jhipster 使它变得如此简单)。
- 将其推送到我们的 gitlab 存储库。
- 在我们的应用程序的根目录下创建了一个 Docker 文件夹并在里面启动了
docker compose
。
我们认为接下来应该做的事情:
- 按照此示例使用 .gitlab-ci.yml 文件配置构建 http://docs.gitlab.com/ce/ci/yaml/README.html
- Link 以某种方式将我们的 Heroku 云服务器连接到 GitLab。
但我还有一些疑问:
- 我们应该将构建 docker 图像的任务留给 gitlab 吗?
- 我经常听说 Docker hub 和 Docker Cloud,但我仍然不明白我的情况,我错了吗?
- 我不确定如何充分发挥 heroku 的潜力。这部分有什么建议吗?
总而言之,我想从我的应用程序创建一个 Docker 图像,构建它并将它发送到我的服务器。我考虑使用 Docker、Gitlab 和 Heroku,但我热衷于任何其他有助于我们拥有快速、稳健和高效开发周期的建议。
谢谢,
这里有不同的方法...至少重要的是您的发布管道是由 CI 触发的,而不是手动触发的。
一开始,是的,GitLab应该负责构建镜像。这些可以存储在 GitLab Container registry (which is avaible in the latest GitLab versions) or the heroku container registy 里面。两者都是私人 docker 注册中心!无论您选择哪一个,您都会获得如何登录到该注册表以推送到该注册表的指南。
我在工作中使用 GitLab 注册表。我使用图像 "xetys/java-8-docker" 将 GitLab CI Runner 配置为 运行。注意,运行ner 必须 运行 才能在 运行 docker 里面。使用此命令启动 运行ner
docker run -d --name gitlab-runner --restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
gitlab/gitlab-runner:latest
然后你可以在 before_script
部分的 gitlab CI 中安装 heroku,以定义一个 "heroku deploy" 任务和一个 "docker push" 任务。
最后,您可以使用 "when: on_success" 让您的部署阶段依赖于最近阶段的成功,以便根据您的图像触发部署。
还有一种方法可以让您的 CI 挂钩到 heroku,从而创建一个由 heroku 维护的可视化部署管道。我从来没有这样做过,所以我不能就此给出任何有意义的建议。
希望我能以某种方式提供帮助。