无法从 Digital Ocean Droplet 访问已部署的应用程序

时间:2021-01-29 16:52:33

标签: deployment digital-ocean dokku

编辑

问题已解决,see this github issue for solution。这与我的应用程序强制 SSL 有关,而没有安装 SSL 证书。这就是连接被拒绝的原因。此外,Chrome 正在强行将 http 重定向到 https

问题

我已经使用 DigitalOcean 的 droplet 在 Dokku 上部署了一个应用程序,但不幸的是我无法访问,我无法从 dokku 外部向我的应用程序发出任何请求。

这是应用程序的服务器日志,应用程序服务器在端口 5000 上运行(我猜是在 docker 容器内?)

2021-01-29T15:54:55.631984450Z app[web.1]: Puma starting in single mode...
2021-01-29T15:54:55.632155110Z app[web.1]: * Version 4.3.5 (ruby 2.7.0-p0), codename: Mysterious Traveller
2021-01-29T15:54:55.632257250Z app[web.1]: * Min threads: 5, max threads: 5
2021-01-29T15:54:55.632416330Z app[web.1]: * Environment: production
2021-01-29T15:54:59.477622282Z app[web.1]: D, [2021-01-29T15:54:59.477398 #10] DEBUG -- : BONSAI_URL not present, proceeding with Elasticsearch defaults.
2021-01-29T15:55:01.789462413Z app[web.1]: * Listening on tcp://0.0.0.0:5000
2021-01-29T15:55:01.790215291Z app[web.1]: Use Ctrl-C to stop

这是我的应用程序端口映射

Proxy enabled:                 true
Proxy port map:                http:80:5000
Proxy type:                    nginx

这是我的 docker ps -a 输出

root@dokku-ubuntu-s-1vcpu-2gb-sgp1-01:~# docker ps -a
CONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS                      PORTS               NAMES
29a40b74890a        dokku/propertysafe:latest     "/start web"             23 minutes ago      Up 23 minutes                                   propertysafe.web.1
159102b6127b        2ab94a5f043a                  "/bin/bash -c 'mkdir…"   23 minutes ago      Exited (0) 23 minutes ago                       naughty_sammet
a2dc93fff2dd        dd5cbe9f96db                  "/bin/bash -c 'mkdir…"   23 minutes ago      Exited (0) 23 minutes ago                       interesting_margulis
5861efa15abf        cc49b1d8e228                  "/build"                 26 minutes ago      Exited (0) 24 minutes ago                       peaceful_napier
e25ce8a7c7e2        9c8964c4fb67                  "/bin/bash -c 'cat >…"   26 minutes ago      Exited (0) 26 minutes ago                       dreamy_morse
410dbbc9cc4c        b197a493cfba                  "/bin/bash -c 'mkdir…"   26 minutes ago      Exited (0) 26 minutes ago                       crazy_hodgkin
5555c7890af0        gliderlabs/herokuish:latest   "/bin/bash -c 'mkdir…"   26 minutes ago      Exited (0) 26 minutes ago                       eager_meitner
287b083012b6        postgres:11.6                 "docker-entrypoint.s…"   2 hours ago         Up 2 hours                  5432/tcp            dokku.postgres.app_db

并且 ufw 防火墙允许 http 流量。

每次我点击 Droplet IP 时,我都会收到连接被拒绝的错误。

1 个答案:

答案 0 :(得分:0)

通常如果 Dokku 应用没有响应外部请求,那是因为应用本身不允许外部网络请求。这可以通过运行来检查:

# replace $APP with your app name
curl --include $(dokku network:report --network-web-listeners $APP)

如果命令没有成功并得到预期的响应,那么这就是您的应用程序中的问题。如果它确实成功,那么很可能是外部的东西阻塞了请求。在这种情况下,许多用户最终会在其服务器前安装 Cloudflare 或类似软件,这可能会因配置错误而导致网络问题。

建议跳上 Gliderlabs Slack 以获得对此类问题的更直接支持。