Dokku - 安装后添加域名

时间:2014-02-14 17:35:33

标签: node.js dns dokku

我在我的Digital Ocean Droplet上安装了Dokku,但是在设置我的dns记录之前就这样做了,所以Dokku安装在IP上。现在我改变了我的dns记录,因此可以通过site.com访问网站。我可以通过site.com:port访问我之前创建的Dokku容器,如何更改Dokku设置以便像这样访问我的应用 - appname.site.com

5 个答案:

答案 0 :(得分:19)

https://github.com/progrium/dokku

  

设置指向该主机的域和通配符域。确保   / home / dokku / VHOST设置为此域。默认情况下,它设置为   主机拥有的主机名。仅当创建此文件时才会创建此文件   主机名可以通过dig(dig + short $(hostname -f))来解决。除此以外   您必须手动创建文件并将其设置为首选文件   域。推送应用时,如果此文件仍然不存在,   dokku将使用端口号发布应用程序(即   http://example.com:49154 - 请注意缺少的子域名。)

要解决此问题,您首先需要更新/ home / dokku / VHOST文件,添加域名 - 这将修复任何新生成的部署,但现有的应用程序需要从/ home /中删除dokku目录按名称(/ home / dokku / foo,/ home / dokku / bar等)并重新部署以使此更改生效,因为每个Dokku应用程序在/ home / dokku / paths中都有一个单独的nginx.conf那些将需要重写。

答案 1 :(得分:4)

扩展@shirkey answer:您不需要重新创建(销毁并再次创建)应用以应用这些更改。您可以在/home/dokku/$APP/目录中手动创建VHOST文件(作为dokku用户),然后删除NO_VHOST设置(dokku config:unset $app NO_VHOST)并将DOKKU_NGINX_PORT更改为80(dokku config:set $app DOKKU_NGINX_PORT=80)并重新启动应用程序( dokku ps:restart $app)。

答案 2 :(得分:4)

确实没有必要销毁和重新创建应用程序。首先,dokku domains:report告诉您是否已启用全局VHOSTS。如果没有,请运行

dokku domains:add-global yourdomain.tld
echo yourdomain.tld | sudo tee -a /home/dokku/VHOST
dokku domains:add myapp myapp.yourdomain.tld
dokku domains:enable myapp

第一个将yourdomain.tld添加到/ home / dokku / HOSTNAME。它也应该添加到/ home / dokku / VHOST,但它没有。所以这需要手动完成。然后告诉dokku您要访问myapp的(子)域名。最后一个命令将myapp的NO_VHOST变量设置为false。

答案 3 :(得分:3)

$ echo“example.com”> /家庭/ dokku / VHOST

答案 4 :(得分:0)

如果仍然可以添加子域。这些是要检查的点。

示例:添加myapp.example.com

1,DNS(例如Namecheap)

如果您正在使用Cloudflare,请检查“自定义DNS”是否设置为Cloudflare。

2,CDN(例如Cloudflare)

检查是否有这样的A记录。

Type  |  Name   |   Content 
A     |  myapp  |  public ip address of Digital ocean server

3,VPS(例如Digital Ocean)

如果您使用Cloudflare,则不必在Digital Ocean上设置域设置。

4,独孤

  • 端口映射设置是否正确? dokku proxy:report检查端口80 映射到容器的端口。
  • 服务器正在运行吗?从服务器内部使用curl

如果仍然无法找到问题的原因,请手动检查/home/dokku/appname/nginx.conf /etc/nginx/nginx.conf之类的nginx配置文件。

示例/home/dokku/appname/nginx.conf文件

server {
  listen      [::]:80;
  listen      80;
  server_name myapp.example.com; 

location    / {
  proxy_pass  http://myapp-3030;
}

upstream myapp-3030 {

  server 172.17.0.4:3030;
}