當我嘗試使用以下命令部署 docker 映像(Python 3.10 和 MongoDB)時,我一直遇到此錯誤:
heroku container:login
heroku create ttcv1
heroku container:push web -a ttcv1
heroku container:release web -a ttcv1
影像被“推送”但我得到一個應用程式錯誤頁面:

日志如下:
`2022-06-07T17:26:12.468116 00:00 heroku[web.1]: Starting process with command `python3`
2022-06-07T17:26:13.339555 00:00 heroku[web.1]: Process exited with status 0
2022-06-07T17:26:13.396838 00:00 heroku[web.1]: State changed from starting to crashed
2022-06-07T17:26:13.405363 00:00 heroku[web.1]: State changed from crashed to starting
2022-06-07T17:26:29.712735 00:00 heroku[web.1]: Starting process with command `python3`
2022-06-07T17:26:31.750611 00:00 heroku[web.1]: Process exited with status 0
2022-06-07T17:26:31.857509 00:00 heroku[web.1]: State changed from starting to crashed
2022-06-07T17:26:33.315159 00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=ttcv1.herokuapp.com request_id=bb032403-08cb-42dc-a8a5-8f683601a45a fwd="49.37.171.163" dyno= connect= service= status=503 bytes= protocol=https
2022-06-07T17:26:33.761854 00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=ttcv1.herokuapp.com request_id=b7217391-0c68-4315-9c73-c3e687dbbe01 fwd="49.37.171.163" dyno= connect= service= status=503 bytes= protocol=https`
燒瓶應用程式運行:
if __name__ == '__main__':
app.secret_key = 'mysecret'
port = int(os.environ.get('PORT', 5000))
app.run(host='0.0.0.0', port=port)
這是我的 docker-compose 檔案
app:
build: .
command: python -u app.py
volumes:
- .:/app
links:
- db
db:
image: mongo:latest
hostname: dstudio
environment:
- MONGO_INITDB_DATABASE=dstudio
ports:
- 27017:27017
我的 docker 檔案(其中一個執行緒要求將其更改為 docker.web;也嘗試過)
FROM python:3.7
ADD . /app
WORKDIR /app
RUN pip install -r requirements.txt
最后,Procfile(如果重要的話)
web: gunicorn --bind 0.0.0.0:${PORT} wsgi
uj5u.com熱心網友回復:
在這種情況下,我建議設定一個替代檔案來處理與用于本地開發的 Docker Compose 檔案不同的部署。查看 heroku 檔案,您可以看到他們建議設定一個 heroku.yml來管理為您構建您的燒瓶服務器。
該檔案看起來像這樣:
build:
docker:
app: Dockerfile
要管理您的 mongo 實體,您可以使用 heroku add on,盡管所有 mongo 實體看起來都需要花錢。我建議設定一個mongodb atlas 集群,然后配置你的 heroku ENV vars 來告訴燒瓶服務器訪問 mongodb 集群。這樣,在您開始超過他們的速率限制之前,它都是免費的。
如果您正在尋找對部署的更多控制,您可以使用單個 docker compose 檔案管理所有內容,heroku 可能不是最適合您的,我鼓勵您查看替代服務。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/487635.html
