python - 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="/"
我已经尝试过的事情
- heroku ps:规模服务= 1
- 添加一个 Procfile (也许我做的不对)
- 从 Dockerfile 中删除 EXPOSE 并添加 $PORT
解决方案
推荐阅读
- c++ - 最小化 lambda 表达式的对象范围
- c - 用c语言从字符串中删除一个字符,得到冲突类型错误
- bash - 使用 bash 将行号添加到最终的非空行
- ios - UITableViewCell 堆叠图层
- android - Nexus 4 API 22 模拟器使用媒体播放器显示白屏
- azure-machine-learning-studio - 导入 html 文本时缺少分隔符错误
- go - 如何在 golang 中使用自签名证书设置 https 服务器
- ssh - 在没有 ssh 会话的服务器上运行应用程序
- angular - 如何遍历请求中的 HttpHeaders 并将任何缺失添加到新的标头变量中
- typescript - 从 typescript 模块导出所有类型(并且只是类型)