假设我正在开发一个在我自己的ci服务器上运行gitlab-ci shell runner的web项目,以构建docker并将其部署到heroku,我已经浏览了gitlab和heroku的一些文档,如{{3 }和gitlab-ci: using docker build。我可以在不使用heroku-docker插件的情况下部署docker项目,这对我来说似乎不那么灵活吗?但是我尝试了,以下方法构建成功部署到heroku,但应用程序崩溃。 Heroku日志说package.json中缺少start
脚本,但由于我正在部署docker项目,我无法在那里"start": "docker-compose up"
,我可以吗?
#.gitlab-ci.yml
stages:
- deploy
before_script:
- npm install
- bower install
dev:
stage: deploy
script:
- docker-compose run nginx run-test
- gem install dpl
- dpl --provider=heroku --app=xixi-web-dev --api-key=$HEROKU_API_KEY
only:
- dev
# docker-compose.yml
app:
build: .
volumes:
- .:/code:ro
expose:
- "3000"
working_dir: /code
command: pm2 start app.dev.json5
nginx:
build: ./setup/nginx
restart: always
volumes:
- ./setup/nginx/sites-enabled:/etc/nginx/sites-enabled:ro
- ./dist:/var/app:ro
ports:
- "$PORT:80"
links:
- app
我不想使用heroku docker插件,因为它似乎不太灵活,我无法创建app.json
,因为我不想为我的应用程序使用现有的docker镜像。相反,我定义了Dockerfile
的自定义app
和nginx
中使用的docker-compose.yml
现在看来heroku不会将我的项目检测为docker项目,除非我使用heroku docker插件部署它,但正如我上面提到的,我不能这样做。然后我在heroku或gitlab上缺少任何文档可以帮助我吗?或者你有什么想法可能有帮助吗?非常感谢!
答案 0 :(得分:1)
好的,似乎需要heroku docker:release
。我最终在我的CI服务器上安装了heroku cli和heroku docker插件,并使用heroku docker:release --app app
来发布我的应用