如何访问通过Dokku部署的应用程序?服务器IP地址不可用

问题描述 投票:0回答:2

我终于成功地将我的 Rails 应用程序部署到 DigitalOcean 服务器上。部署日志的最后有这两行:

...
-----> Shutting down old containers in 60 seconds
=====> Application deployed:
       http://myapp-prod.packer-6481b5fa-xxxx-yyyy-zzzz-a2621ac2dcee:3000
       http://test:3000

第一个 URL

http://myapp-prod.packer-6481b5fa-xxxx-yyyy-zzzz-a2621ac2dcee:3000
不起作用 - 返回 无法访问此网站。第二个,
http://test:3000
,显然也不起作用。

当我尝试输入服务器的 IP 地址(也显示在

/home/dokku/VHOST
中)时,它返回 无法访问此站点

服务器上是dokku目录

/home/dokku/myapp-prod
,里面有这个文件
nginx.conf
:

server {
  listen      [::]:3000;
  listen      3000;
  server_name myapp-prod.packer-6481b5fa-f32f-c6ab-b44d-a2621ac2dcee test;
  access_log  /var/log/nginx/myapp-prod-access.log;
  error_log   /var/log/nginx/myapp-prod-error.log;

  location    / {

    gzip on;
    gzip_min_length  1100;
    gzip_buffers  4 32k;
    gzip_types    text/css text/javascript text/xml text/plain text/x-component application/javascript application/x-javascript application/json application/xml  application/rss+xml font/truetype application/x-font-ttf font/opentype application/vnd.ms-fontobject image/svg+xml;
    gzip_vary on;
    gzip_comp_level  6;

    proxy_pass  http://myapp-prod-3000;
    proxy_http_version 1.1;
    proxy_read_timeout 60s;
    proxy_buffer_size 4096;
    proxy_buffering on;
    proxy_buffers 8 4096;
    proxy_busy_buffers_size 8192;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $http_connection;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header X-Forwarded-Port $server_port;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Request-Start $msec;

  }



  error_page 400 401 402 403 405 406 407 408 409 410 411 412 413 414 415 416 417 418 420 422 423 424 426 428 429 431 444 449 450 451 /400-error.html;
  location /400-error.html {
    root /var/lib/dokku/data/nginx-vhosts/dokku-errors;
    internal;
  }

  error_page 404 /404-error.html;
  location /404-error.html {
    root /var/lib/dokku/data/nginx-vhosts/dokku-errors;
    internal;
  }

  error_page 500 501 502 503 504 505 506 507 508 509 510 511 /500-error.html;
  location /500-error.html {
    root /var/lib/dokku/data/nginx-vhosts/dokku-errors;
    internal;
  }
  include /home/dokku/myapp-prod/nginx.conf.d/*.conf;

}

upstream myapp-prod-3000 {

  server 172.17.0.3:3000;
}

编辑:运行

dokku network:list
返回

=====> Networks
bridge
host
none

这可能听起来像一个愚蠢的问题,但我如何“激活”/通过 dokku 访问已部署的应用程序?

ruby-on-rails nginx digital-ocean dokku
2个回答
0
投票

在这种情况下,应用程序具有与其关联的“无效”域,其中“无效”意味着它们无法通过 DNS 路由。 Dokku 不执行 DNS 查找,因为在某些情况下,某些内容可能无法通过公共 DNS 寻址,但由于某些其他网络“魔法”(例如通过 mDNS 或某些潜在的中间代理)而可路由。

将服务器的 IP 地址设置为 DNS 提供商的域后,您可以通过以下方式将该域分配给应用程序:

# where `$APP_NAME` is your app name
# and `$DOMAIN` is the domain in question
dokku domains:set $APP_NAME $DOMAIN

此外,您的应用程序似乎是基于

Dockerfile
的应用程序。当 Dokku 构建
Dockerfile
应用程序时,它将尊重任何
EXPOSE
指令并将其用于公共代理。例如,如果您的
Dockerfile
中有以下内容:

EXPOSE 3000

并且与应用程序关联的

example.com
域,您的应用程序可以通过
http://example.com:3000
访问。由于 nginx 的工作原理,访问
http://example.com:80
将路由到第一个侦听端口 80 的应用程序,因为它默认为按字典顺序排列的第一个服务器块。如果没有应用程序侦听端口 80,nginx 将不会服务该请求。

要修复端口映射,您可以运行

ports:set
命令。这将覆盖检测到的端口映射并在您的应用程序的生命周期内使用。

dokku ports:set $APP http:80:3000

0
投票

我要做的就是 ssh 进入服务器并输入

ufw status 3000/tcp
。然后输入http://IP:3000后就会出现网站。

© www.soinside.com 2019 - 2024. All rights reserved.