[英]Trouble deploying multi-container docker application to heroku using travis
[英]Failed to deploy multi-container app to Heroku via Travis CI
在过去的两天里,我一直在尝试通过 Travis CI 将我的多容器应用程序部署到 Heroku 的不同方法。 当我从 Travis CI 部署我的应用程序时,Heroku 显示一个奇怪的错误。
这是我的
version: '3'
services:
db:
image: mysql:5.7
ports:
- '3306:3306'
environment:
MYSQL_DATABASE: 'mysql'
MYSQL_USER: 'root'
MYSQL_PASSWORD: 'root'
MYSQL_ROOT_PASSWORD: 'root'
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/covid_analysis
ports:
- "8000:8000"
depends_on:
- db
使用此配置进行部署后,我的 Travis CI 构建显示一个奇怪的错误:
在谷歌搜索之后,我发现了一个关于这个问题的 GitHub问题,它建议使用入口点而不是 cmd/命令进行部署。
因此,我确实将我的command: python manage.py runserver 0.0.0.0:8000
更改为entrypoint: python manage.py runserver 0.0.0.0:8000
。
这一次,Travis 构建错误如下:
这是我最新的 docker-compose.yml和Dockerfile我用谷歌搜索了很多东西,但我找不到任何可以解决我的问题的东西(甚至无法解释它为什么不起作用)。 所有构建在本地都可以正常工作。 该代码在GitHub上可用。
您的错误来自您调用docker-compose run
的方式。
在您的.travis.yml
中,可以找到以下内容:
script: - docker-compose run web python manage.py test
您的 docker-compose 在这里尝试做的是运行以下服务:
但是 docker-compose 中存在的唯一服务是web
,因此命令失败。
更新
我原来的答案是错误的,我认为docker-compose run
与docker-compose up
具有相似的行为。
在.travis.yml
web
服务从command:
重构为entrypoint:
后出现错误的原因是docker-compose.yml
中的以下脚本:
script:
- docker-compose run --entrypoint="python manage.py test" web
The default behavior of docker-compose run
is that it passes all the arguments after the specified service (in this case python manage.py test
comes after web
), as an override to command
.
因为它现在被重构为entrypoint
,所以这不再起作用了。 这可以通过编写如下脚本来解决:
script: - docker-compose run --entrypoint="python manage.py test" web
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.