Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将docker compose应用程序部署到heroku?_Docker_Heroku - Fatal编程技术网

如何将docker compose应用程序部署到heroku?

如何将docker compose应用程序部署到heroku?,docker,heroku,Docker,Heroku,我想将python django dockerapp部署到heroku。但是我得到了psycopg2。操作错误:无法将主机名“db”转换为地址:名称或服务未知错误发生在git-push-heroku-master之后 文件如下 我如何解决这个问题?谢谢 docker-compose.yml 版本:“3” 服务: db: 图片:博士后 环境: POSTGRES_DB:testdb POSTGRES_用户:testuser POSTGRES_密码:testpw 网状物: 生成:。 命令:pyth

我想将python django dockerapp部署到heroku。但是我得到了psycopg2。操作错误:无法将主机名“db”转换为地址:名称或服务未知错误发生在
git-push-heroku-master
之后

文件如下

我如何解决这个问题?谢谢

  • docker-compose.yml
版本:“3”
服务:
db:
图片:博士后
环境:
POSTGRES_DB:testdb
POSTGRES_用户:testuser
POSTGRES_密码:testpw
网状物:
生成:。
命令:python manage.py runserver 0.0.0.0:8000
卷数:
-.:/code
端口:
- "8000:8000"
取决于:
-分贝
  • 赫罗库
设置:
插件:
-计划:heroku postgresql
as:db
配置:
S3_桶:db
建造:
码头工人:
网页:Dockerfile
运行:
web:python manage.py运行服务器0.0.0.0:8000
工人:
图片:网络
  • 我运行的命令:
gitinit;git-add-A;git-commit-m。
heroku create#//无名-安克雷奇-47384
heroku git:remote-a无名安克雷奇-47384
heroku堆栈:设置容器
git推动heroku大师;heroku原木——尾巴
  • 我得到的日志:

我想你做不到。我必须做一个免费的“Postgres插件”,然后使用他们公开的
数据库URL
环境变量连接到数据库。

在我看来,你可能需要将
db
主机名替换为
os.environ.get('database\u URL')
,这是使用heroku数据库插件默认设置的

因此,无论您在哪里传递数据库连接uri,只要将其更新为指向heroku数据库的URL()

见:

据我所见,它不是使用一个
docker compose.yml
文件来部署,而是编写一个定制的
heroku.yml
文件

heroku.yml概述

heroku.yml清单有4个顶级部分:

setup - Specifies the add-ons and config vars to create during app provisioning
build - Specifies the Dockerfile to build
release - Specifies the release phase tasks to execute
run - Specifies process types and the commands to run for each
他们以此为例,与compose.yml文件不同:

示例
heroku.yml
文件:

setup:
  addons:
    - plan: heroku-postgresql
      as: DATABASE
  config:
    S3_BUCKET: my-example-bucket
build:
  docker:
    web: Dockerfile
    worker: worker/Dockerfile
  config:
    RAILS_ENV: development
    FOO: bar
release:
  command:
    - ./deployment-tasks.sh
  image: worker
run:
  web: bundle exec puma -C config/puma.rb
  worker: python myworker.py
  asset-syncer:
    command:
      - python asset-syncer.py
    image: worker

不要在Heroku上运行自己的数据库基础设施(或者任何其他生产环境,除非您真的知道自己在做什么)。使用一个数据库插件。另外,我不确定你是否可以像运行web进程那样使用硬编码端口(8000)。可能使用
$PORT
Heroku环境变量?
setup:
  addons:
    - plan: heroku-postgresql
      as: DATABASE
  config:
    S3_BUCKET: my-example-bucket
build:
  docker:
    web: Dockerfile
    worker: worker/Dockerfile
  config:
    RAILS_ENV: development
    FOO: bar
release:
  command:
    - ./deployment-tasks.sh
  image: worker
run:
  web: bundle exec puma -C config/puma.rb
  worker: python myworker.py
  asset-syncer:
    command:
      - python asset-syncer.py
    image: worker