点击上方蓝字关注我们
IT 咖啡馆,探索无限可能!
恭喜你发现了这个宝藏,这里你会发现优质的开源项目、IT知识和有趣的内容。
想把自己的开发成果发布出去,就要解决部署的问题,感觉完全从头搞定部署很复杂?很多人会考虑使用各种PaaS平台,比如Heroku、Vercel。
今天我们分享的开源项目,它让你可以构建一个属于自己的PaaS平台,以后部署项目只需要简单的几行命令就可以搞定,它就是:Dokku
Dokku 是什么
dokku是一个基于 Docker 的 PaaS,可帮助您构建和管理应用程序的生命周期,你可以把它理解成Docker 支持的迷你 Heroku。
它帮助您管理服务器上运行的软件,通过处理源代码的移动、站点的容器化、域的分配、构建、SSL 证书等,使部署变得简单。
Dokku 自身不支持数据库,但是可以通过插件的形式来支持。从传统的 MariaDB,PostgreSQL,到 CouchDB,Elasticsearch 等等。
安装 Dokku
系统要求
系统要求
要开始使用 Dokku,你需要一个满足以下最低要求的系统:
全新安装以下任一操作系统:
Ubuntu 20.04/22.04
Debian 10+ x64
具有以下架构之一的服务器
AMD64(也称为
x86_64
)或ARMV8(也称为arm64
)
为了避免应用程序在构建或运行时出现内存压力,至少 1 GB 的系统内存。
另外就是建议至少准备一个域名来绑定到部署Dokku 的服务器。
部署安装
部署安装
你可以在自己的硬件或者云上来部署,要安装最新稳定版本的 Dokku,您可以运行以下 shell 命令:
# for debian systems, installs Dokku via apt-get
wget -NP . <https://dokku.com/install/v0.34.8/bootstrap.sh>
sudo DOKKU_TAG=v0.34.8 bash bootstrap.sh
安装过程大约需要 5-10 分钟,具体取决于互联网连接速度。
设置密钥和域名
设置密钥和域名
安装完成后,您应该配置一个 ssh 密钥并设置您的域名。
# usually your key is already available under the current user's `~/.ssh/authorized_keys` file
cat ~/.ssh/authorized_keys | dokku ssh-keys:add admin
# you can use any domain you already have access to
# this domain should have an A record or CNAME pointing at your server's IP
dokku domains:set-global dokku.me
# you can also use the ip of your server
dokku domains:set-global 10.0.0.2
# finally, you can use sslip.io to get subdomain support
# as you would with a regular domain name
# this would be done by appending `.sslip.io` to your ip address
dokku domains:set-global 10.0.0.2.sslip.io
在主机上设置完成后,您可以通过 Git 将与 Heroku 兼容的应用程序推送到主机。
使用 Dokku
部署方式
Dokku 支持通过几种方式部署应用程序:
通过Herokuish 的Heroku buildpacks:查看herokuish buildpacks 文档,了解指定 buildpack 的不同方法。这是 Dokku 使用的默认方法。
Dockerfile:查看dockerfile 文档,了解配置基于 Dockerfile 的部署的不同方法。
Docker 镜像:查看Docker 镜像文档,了解如何部署 Docker 镜像。
我们完成Dokku的安装后,你就可以使用git push
部署应用程序,接下来就用官方的示例项目来看下部署的过程。
git clone <https://github.com/heroku/ruby-getting-started>
创建应用程序
SSH 进入 Dokku 主机并创建应用程序,如下所示:
# on the Dokku host
dokku apps:create ruby-getting-started
创建支持服务
Dokku 默认不为新创建的应用提供数据存储(例如 MySQL、PostgreSQL)。你可以通过安装插件来添加数据存储支持,Dokku 项目为常见的数据存储提供了官方插件。
入门应用程序需要 PostgreSQL 服务,因此请安装插件并创建相关服务,如下所示
# plugin installation requires root, hence the user change
sudo dokku plugin:install <https://github.com/dokku/dokku-postgres.git>
# create a postgres service with the name railsdatabase
dokku postgres:create railsdatabase
链接到应用程序
创建服务后,您可以DATABASE_URL
通过链接服务来设置环境变量,如下所示:
# on the Dokku host
# each official datastore offers a `link` method to link a service to any application
dokku postgres:link railsdatabase ruby-getting-started
部署应用
现在您可以将ruby-getting-started
应用程序部署到 Dokku 服务器。您所要做的就是添加一个远程来命名应用程序。应用程序是在 Dokku 服务器上即时创建的。
# from your local machine
# the remote username *must* be dokku or pushes will fail
cd ruby-getting-started
git remote add dokku dokku@dokku.me:ruby-getting-started
git push dokku main
部署的过程可以参考以下的效果。
总结
总的来说Dokku是一个非常有用的工具,虽然现在的PaaS平台非常强大,比如vercal、firebase等,但如果你不想受制于人或是想完全的掌握自己的数据,那么可以通过Dokku来构建自己的平台,能力也很强大。另外你可以通过它的起来,来考虑构建和实现自己的PaaS来提供给别人使用。
项目信息
项目名称:dokku
GitHub 链接:https://github.com/dokku/dokku
Star 数:28K