Mac*_*der 5 continuous-integration heroku gitlab docker
我在gitlab上托管了项目存储库.我正在使用gitlab-ci从我的项目构建docker容器.我想要实现的是将该容器部署到heroku.
我试图遵循这个问题的解决方案:如何使用Jhipster,Docker,Gitlab和Heroku构建,测试和部署
这是我的.gitlab-ci.yaml样子:
stages:
- build
- package
- deploy
build_npm:
image: node:latest
stage: build
script:
- npm install
- npm run build:prod
artifacts:
paths:
- dist/
build_image:
image: docker:latest
services:
- docker:dind
stage: package
script:
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.gitlab.com
- docker build -t registry.gitlab.com/maciejsobala/myApp .
- docker push registry.gitlab.com/maciejsobala/myApp:latest
deploy_to_heroku:
stage: deploy
services:
- docker:dind
script:
- gem install dpl
- docker run registry.gitlab.com/maciejsobala/myApp:latest
- dpl --provider=heroku --app= myApp --api-key=$HEROKU_API_KEY
Run Code Online (Sandbox Code Playgroud)
我想要实现的是,有3个阶段:
jar这里添加一些)我遇到了最后阶段的问题(deploy).说实话,我不太确定,应该在这做什么.
我尝试使用dpl,关于本教程:https://docs.gitlab.com/ce/ci/examples/test-and-deploy-ruby-application-to-heroku.html
Unfornatelly我在尝试运行docker image时遇到了问题
$ docker run registry.gitlab.com/maciejsobala/myApp:latest
/bin/bash: line 49: docker: command not found
Run Code Online (Sandbox Code Playgroud)
我在这里完全失明了.我真的很感激任何解决方案,链接到文章/教程等.
您出于某种原因启动应用程序(使用docker run),您可能不需要.该dpl工具旨在用于代码库,而不是用于映像部署.如你所说
build_image:
image: docker:latest
services:
- docker:dind
stage: package
script:
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.gitlab.com
- docker build -t registry.gitlab.com/maciejsobala/myApp .
- docker push registry.gitlab.com/maciejsobala/myApp:latest
Run Code Online (Sandbox Code Playgroud)
什么意思是你的跑步者能够在码头工人中运行码头并成功推送图像.根据官方的heroku文档,对于heroku部署,您只能将该图像推送到heroku docker注册表.总之,你做了一个
deploy_to_heroku:
stage: deploy
services:
- docker:dind
script:
- docker login --email=_ --username=_ --password=<YOUR-HEROKU-AUTH-TOKEN> registry.heroku.com
- docker tag registry.gitlab.com/maciejsobala/myApp:latest registry.heroku.com/maciejsobala/myApp:latest
- docker push registry.heroku.com/maciejsobala/myApp:latest
Run Code Online (Sandbox Code Playgroud)
使用您的heroku身份验证令牌,您可以获得 heroku auth:token
如文档中所述,推送到herokus注册表会触发应用程序的发布过程.
的原因
“没有这样的图像:registry.gitlab.com/username/image:tag”
错误是应该预先拉取标签源。脚本块应该包含一个docker pull语句。整体脚本块应如下所示:
script:
- docker login --email=_ --username=_ --password=<YOUR-HEROKU-AUTH-TOKEN> registry.heroku.com
- docker pull registry.gitlab.com/maciejsobala/myApp:latest
- docker tag registry.gitlab.com/maciejsobala/myApp:latest registry.heroku.com/maciejsobala/myApp:latest
- docker push registry.heroku.com/maciejsobala/myApp:latest
Run Code Online (Sandbox Code Playgroud)
但这还不够。Heroku 更改了其发布政策,以便推送到 Heroku Container Registry 不再触发发布。这是完成缺少的发布任务的额外命令:
- docker run --rm -e HEROKU_API_KEY=<YOUR-HEROKU-AUTH-TOKEN> wingrunr21/alpine-heroku-cli container:release web --app myApp
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3006 次 |
| 最近记录: |