繁体   English   中英

无法通过 Travis CI 将多容器应用程序部署到 Heroku

[英]Failed to deploy multi-container app to Heroku via Travis CI

在过去的两天里,我一直在尝试通过 Travis CI 将我的多容器应用程序部署到 Heroku 的不同方法。 当我从 Travis CI 部署我的应用程序时,Heroku 显示一个奇怪的错误。

这是我的

docker-compose.yml:

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.ymlDockerfile我用谷歌搜索了很多东西,但我找不到任何可以解决我的问题的东西(甚至无法解释它为什么不起作用)。 所有构建在本地都可以正常工作。 该代码在GitHub上可用。

您的错误来自您调用docker-compose run的方式。

在您的.travis.yml中,可以找到以下内容:

 script: - docker-compose run web python manage.py test

您的 docker-compose 在这里尝试做的是运行以下服务:

  • web
  • python
  • 管理.py
  • 测试

但是 docker-compose 中存在的唯一服务是web ,因此命令失败。

更新

我原来的答案是错误的,我认为docker-compose rundocker-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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM