注:Dokku项目自本指南编写以来发生了重大变化。 以下说明可能无法反映Dokku项目的当前状态。
介绍
在开发应用程序一个显著的障碍是提供一个健全的和简单的方法来部署您的成品。Dokku是平台即服务解决方案,使您能够快速部署和一个单独的服务器上配置的应用到生产环境。
Dokku与Heroku类似,可以部署到远程服务器。 不同的是,Dokku被部署到单个个人服务器,并且非常轻量级。 Dokku使用Docker(一种Linux容器系统)来轻松管理其部署。
在本指南中,我们将介绍如何使用DigitalOcean Dokku一键安装映像部署您的应用程序。
第一步 - 创建Dokku Droplet
我们需要做的第一件事是创建包含我们的Dokku安装的VPS实例。 这是使用DigitalOcean Dokku应用程序设置简单。
点击“创建”按钮创建一个新的Droplet:
命名您的Droplet,并选择您要使用的大小和地区:
向下滚动并单击“应用程序”选项卡。 选择Dokku应用程序映像:
如果您有SSH密钥可用,请选择它们。 如果你还没有他们的配置,现在是一个伟大的时间来创建SSH密钥与DigitalOcean滴用 。 此步骤将帮助您以后。
点击“创建Droplet”。 将创建您的Dokku VPS实例。
一旦你的Droplet创建,你应该设置你的域名指向你的新DokkuDroplet。 你可以学习如何与DigitalOcean配置的域名在这里。
第二步 - 访问Droplet完成配置
您可以通过从Web浏览器访问您的VPS来完成您的Dokku配置。
如果您配置了一个域名以指向您的Dokku安装,您应该使用您喜爱的网络浏览器访问您的域名。 如果您没有配置域名,您可以使用您的Droplet的IP地址。
您将获得一个简单的配置页面。 这里有一些部分需要配置。
首先,检查公共密钥,你将可以从部署的计算机相匹配。 这意味着如果您的项目在您的家庭计算机上,您应该使用与该设置对应的公共密钥。
如果您在创建Droplet期间选择了多个SSH密钥进行嵌入,则只有第一个可用。 根据需要进行修改。
接下来,修改主机名外地来匹配您的域名。 如果您没有配置域名,请将其保留为您的IP地址。
选择希望引用应用程序的方式。 默认情况下,应用程序将如下所示:
your_domain.com:app_specific_port_number
如果选择“为应用程序使用虚拟主机命名”复选框,则可以使用虚拟主机访问您的应用程序:
http://app_name.your_domain.com
单击“完成设置”按钮完成配置。
第三步 - 将您的应用程序部署到您的Dokku Droplet
在这一点上,我们的DokkuDroplet配置并准备开始接收git仓库,它会自动部署。
这个过程就像将一个本地git存储库推送到Dokku中一样简单。 让我们用一个示例应用程序试试。
我们将假设您已经在安装您的项目的计算机上安装了git。 克隆我们将使用此命令的示例应用程序:
git clone https://github.com/imchairmanm/demo_application.git
切换到演示项目的目录:
cd demo_application
现在,我们所要做的就是将DokkuDroplet添加为远程服务器。
我们可以调用远程任何我们想要的,但我们给存储库的名称将决定我们如何访问应用程序(如果你检查了virtualhost命名选项)。
git remote add remote_name dokku@your_domain.com:name_to_give_your_app
现在剩下要做的就是推动您的应用程序部署:
git push remote_name master
您将看到git输出并获得应用程序部署消息,如下所示:
-----> Releasing demo ... -----> Deploying demo ... -----> Cleaning up ... =====> Application deployed: http://app_name.your_domain.com To dokku@your_domain.com:app_name * [new branch] master -> master您可以通过转到其提供的网址访问您的应用程序:
http://app_name.your_domain.com
你的应用程序被推到你的DokkuDroplet,并立即部署。
如果你需要删除一个应用程序,你可以通过登录到DokkuDroplet通过SSH和输入:
dokku delete app_name
结论
如您所见,Dokku利用一些强大的技术,使您的应用程序部署轻松,无缝。 您可以在任何适合您需求的环境中进行配置和开发,然后部署到无人值守的生产机器。