首页 > 解决方案 > H14 通过 Heroku 上的 Docker 使用 Postgres 部署 FastAPI 时没有运行 Web 进程

问题描述

Dockerfile

FROM tiangolo/uvicorn-gunicorn:python3.7
ADD . /dash
WORKDIR /dash
ENV DATABASE=postgres
ENV DB_NAME=xxx
ENV HOST_ADDRESS=xxx
ENV DB_USER=xxxx
ENV DB_PASSWORD=xxx
RUN chmod u+x ./entrypoint.sh
ENTRYPOINT ["./entrypoint.sh"]

入口点.sh

#!/bin/bash
pip install -r requirements.txt
pip install requests
alembic revision --autogenerate
alembic upgrade head
uvicorn app.server:app --reload --port $PORT

码头工人撰写

version: "3.8"
services: 
    serve:
        build: .
        ports: 
            - "5000:5000"
        volumes: 
            - .:/dash
        entrypoint: /dash/entrypoint.sh
        depends_on:
            - db
    db:
        image: postgres
        ports:
            - "5432:5432"

部署是通过 heroku 容器注册表完成的并且 dyno 正在运行

serve (Free): ./entrypoint.sh (1)
serve.1: up 2021/04/30 15:25:11 +0530 (~ 4m ago)

错误日志显示

heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/"

我已经尝试过的事情

  1. heroku ps:规模服务= 1
  2. 添加一个 Procfile (也许我做的不对)
  3. 从 Dockerfile 中删除 EXPOSE 并添加 $PORT

标签: pythondockerherokuheroku-cli

解决方案


推荐阅读