首页 > 解决方案 > 如何在 Lumen 应用上使用 docker 容器解决 heroku 部署的 503 错误

问题描述

我正在尝试使用 docker 容器在 heroku 中部署 PHP Lumen webapp。

我正在使用 docker-compose 在本地部署我的应用程序,使用它没有问题。我可以在 localhost 中测试它而没有任何问题。

这是我的 docker-compose 文件:

nginx:
  build: images/nginx
  command: nginx -g "daemon off;"
  links:
    - php
  ports:
    - "80:80"
php:
  build: images/php
  volumes:
    - ./images/php:/var/www/html
  working_dir: /var/www/html/app/public
  command: php-fpm
  links:
    - db
    - cache
  ports:
    - "9000:9000"
  environment:
    APP_ENV: local
    APP_DEBUG: 'true'
    APP_KEY: SomeRandomKey!!!
    APP_LOCALE: en
    APP_FALLBACK_LOCALE: en
    DB_CONNECTION: mysql
    DB_HOST: db
    DB_DATABASE: lumen
    DB_USERNAME: lumen
    DB_PASSWORD: secret
    MEMCACHED_HOST: cache
    CACHE_DRIVER: memcached
    CACHE_DRIVER: array
    SESSION_DRIVER: array
    QUEUE_DRIVER: array
    SESSION_DRIVER: cookie
db:
  image: mysql
  command: mysqld --default-authentication-plugin=mysql_native_password
  restart: always
  ports:
    - "3306:3306"
  environment:
    MYSQL_ROOT_PASSWORD: secret
    MYSQL_DATABASE: lumen
    MYSQL_USER: lumen
    MYSQL_PASSWORD: secret
cache:
  image: memcached

我尝试按照其文档在heroku上进行部署,这样做:

On root folder:
heroku create
heroku container:push web
heroku container:release web

关于部署的一切似乎都很好,但是当我尝试进入应用程序时,我得到一个错误屏幕,上面写着“应用程序错误”。

查看日志后,我唯一能看到的是这条消息:

2019-04-15T21:54:41.459127+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=***.herokuapp.com request_id=**** fwd="***" dyno= connect= service= status=503 bytes= protocol=https
2019-04-15T21:54:42.185673+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=***.herokuapp.com request_id=**** fwd="***" dyno= connect= service= status=503 bytes= protocol

在做了一些研究之后,我认为这可能与缺少数据库或类似的东西有关,但调试“503”消息没有意义,所以我不知道如何继续解决。

有人知道如何解决这个问题吗?

任何帮助,将不胜感激。非常感谢。

标签: laravelherokudocker-composelumenhttp-status-code-503

解决方案


推荐阅读