gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 19:16:53 25 4
gpt4 key购买 nike

在过去的两天里,我一直在尝试通过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 build显示了一个奇怪的错误:
build error
经过Google的一些搜索之后,我发现了有关此问题的GitHub issue,这建议使用入口点而不是cmd / command进行部署。
因此,我确实将 command: python manage.py runserver 0.0.0.0:8000更改为 entrypoint: python manage.py runserver 0.0.0.0:8000
这次,Travis build出现如下错误:
build error
这是我最新的 docker-compose.ymlDockerfile
我已经用Google搜索了很多东西,但是找不到任何可以解决我的问题的东西(甚至无法解释为什么它不起作用)。
所有构建都可以在本地正常运行。该代码在 GitHub上可用。

最佳答案

您的错误来自您在Travis CI上调用docker-compose run的方式。
.travis.yml中,可以找到以下内容:

script:
- docker-compose run web python manage.py test
您的docker-compose试图在此处执行的操作是运行以下服务:
  • 网站
  • python
  • manage.py
  • 测试

  • 但是,docker-compose中存在的唯一服务是 web,因此命令失败。
    更新
    我最初的答案是错误的,我认为 docker-compose rundocker-compose up具有相似的行为。
    web服务从 command:entrypoint:重构为 docker-compose.yml后发生错误的原因是由于 .travis.yml中的以下脚本:
    script:
    - docker-compose run web python manage.py test
    docker-compose run的默认行为是,它在指定服务之后传递所有参数(在这种情况下 python manage.py testweb之后),作为 command的替代。
    由于现在已将其重构为 entrypoint,因此不再起作用。可以通过编写如下脚本来解决此问题:
    script:
    - docker-compose run --entrypoint="python manage.py test" web

    关于docker - 无法通过Travis CI将多容器应用程序部署到Heroku,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62996384/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com