在Ubuntu 20.04 | 18.04上安装Dokku(Docker PaaS)

时间:2020-02-23 14:31:32  来源:igfitidea点击:

Dokku是可扩展的开源平台即服务,可在我们选择的单个服务器上运行。如果我们曾经使用过Heroku,请将其视为Heroku的托管版本。我们可以在单个服务器上运行基于Docker的平台即服务。在本教程中,我们将介绍在Ubuntu 20.04 | 18.04 Linux系统上Dokku PaaS的安装。

从本文更新时开始,支持的操作系统为:Ubuntu 16.04/18.04/20.04 x64Debian 9+ x64

在Ubuntu上安装Dokku的准备工作

已安装并更新了Ubuntu 20.04 | 18.04系统Docker引擎至少1GB的系统内存已设置FQDN的服务器可以位于DNS或者/etc/hosts上

有两种在Ubuntu 20.0418.04上安装Dokku的方法:使用引导脚本从Dokku apt仓库安装

我们将考虑在Ubuntu 20.04 | 18.04 Linux服务器上安装Dokku的两种方法。我建议从apt信息库安装Dokku,以便我们可以了解正在发生的事情。

使用hostnamectl命令设置系统主机名:

$sudo hostamectl set-hostname dokku.theitroad.local

确保系统已更新和升级:

sudo apt update
sudo apt upgrade -y
sudo reboot

方法1:从apt储存库在Ubuntu 20.04 | 18.04上安装Dokku

Dokku软件包可在packagecloud.io.dokkurepository上获得。首先导入存储库GPG密钥以信任软件包:

sudo apt update
sudo apt install -y apt-transport-https
wget -nv -O - https://packagecloud.io/dokku/dokku/gpgkey | sudo apt-key add 

密钥导入输出:

2017-10-08 19:40:09 URL:https://d28dx6y1hfq314.cloudfront.net/505/623/gpg/dokku-dokku-FB2B6AA421CD193F.pub.gpg?t=1602179109_89e21c60fdf77e8ab2181ba23ae0dc910985dfbb [3937/3937] -> "-" [1]
OK

使用以下命令添加存储库:

OS_ID="$(lsb_release -cs 2>/dev/null || echo "bionic")"
echo "deb https://packagecloud.io/dokku/dokku/ubuntu/${OS_ID} main" | sudo tee /etc/apt/sources.list.d/dokku.list

然后更新系统软件包列表:

sudo apt update

在Ubuntu 20.04 | 18.04上安装Docker Engine

我们可以安装Dokku支持的稳定版本的Docker或者边缘版本。

wget -nv -O - https://get.docker.com/| sudo bash 

将用户帐户添加到Docker组:

sudo usermod -aG docker $USER
newgrp docker

这是无人参与的安装,请等待其完成,然后确认已安装docker引擎版本:

$docker version
Client: Docker Engine - Community
 Version:           19.03.13
 API version:       1.40
 Go version:        go1.13.15
 Git commit:        4484c46d9d
 Built:             Wed Sep 16 17:02:52 2017
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.13
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       4484c46d9d
  Built:            Wed Sep 16 17:01:20 2017
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.3.7
  GitCommit:        8fba4e9a7d01810a393d5d25a3621dc101981175
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

在Ubuntu 20.04 | 18.04上安装Dokku

一旦安装了docker,就可以继续在Ubuntu 20.04 | 18.04 LTS系统上安装Dokku。这是通过更新系统软件包并安装dokku软件包来完成的:

sudo apt update
sudo apt install dokku -y

通过apt安装的依赖项包括:herokuishsshcommandplugn

当询问是否启用Web配置界面时,回答是

安装dokku还将为我们配置nginx并创建用于管理服务的systemd服务单元。安装输出摘要如下所示:

....
Adding user dokku to group adm
Starting nginx (via systemctl): nginx.service.
-----> Priming bash-completion cache
Ensure proper sshcommand path
Setting up dokku-installer
Enabling dokku-installer
Created symlink /etc/systemd/system/multi-user.target.wants/dokku-installer.service → /etc/systemd/system/dokku-installer.service.
Created symlink /etc/systemd/system/graphical.target.wants/dokku-installer.service → /etc/systemd/system/dokku-installer.service.
Starting dokku-installer
Processing triggers for libc-bin (2.31-0ubuntu9.1) ...
Processing triggers for ufw (0.36-6) ...
Processing triggers for systemd (245.4-4ubuntu3.2) ...
Processing triggers for man-db (2.9.1-1) ...

安装dokku依赖项:

sudo dokku plugin:install-dependencies --core

一个名为dokkuis的用户和组也添加到系统中,其主目录为/home/dokku。在将应用程序部署到Dokku时使用此用户帐户。

$id dokku
uid=1001(dokku) gid=1002(dokku) groups=1002(dokku),4(adm),998(docker)

$ls -la /home/dokku/
total 44
drwxr-xr-x 5 dokku dokku 4096 Oct  8 19:45 .
drwxr-xr-x 4 root  root  4096 Oct  8 19:43 ..
drwxr-xr-x 2 dokku dokku 4096 Oct  8 19:45 .basher
-rw-r--r-- 1 dokku dokku  220 Oct  8 19:43 .bash_logout
-rw-r--r-- 1 dokku dokku 3771 Oct  8 19:43 .bashrc
-rw-r--r-- 1 dokku dokku    0 Oct  8 19:43 .cloud-locale-test.skip
drwxr-xr-x 2 dokku dokku 4096 Oct  8 19:43 .dokkurc
-rw-r--r-- 1 dokku dokku   29 Oct  8 19:43 HOSTNAME
-rw-r--r-- 1 dokku dokku  807 Oct  8 19:43 .profile
drwxr-xr-x 2 dokku dokku 4096 Oct  8 19:43 .ssh
-rw-r--r-- 1 dokku root    15 Oct  8 19:44 .sshcommand
-rw-r--r-- 1 dokku dokku   29 Oct  8 19:43 VHOST

安装后,该服务应默认运行。服务的名称是dokku-installer.service

$systemctl status dokku-installer.service
● dokku-installer.service - Dokku web-installer
     Loaded: loaded (/etc/systemd/system/dokku-installer.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2017-10-08 19:44:41 CEST; 6min ago
   Main PID: 14789 (python3)
      Tasks: 1 (limit: 2286)
     Memory: 8.3M
     CGroup: /system.slice/dokku-installer.service
             └─14789 python3 /usr/share/dokku/contrib/dokku-installer.py selfdestruct

Oct 08 19:44:41 ubuntu systemd[1]: Started Dokku web-installer.
Oct 08 19:44:41 ubuntu sudo[14817]:     root : TTY=unknown ; PWD=/; USER=root ; COMMAND=/usr/sbin/ufw status
Oct 08 19:44:41 ubuntu sudo[14817]: pam_unix(sudo:session): session opened for user root by (uid=0)
Oct 08 19:44:41 ubuntu sudo[14817]: pam_unix(sudo:session): session closed for user root

确认是否已启用该服务以在启动时启动:

$systemctl is-enabled dokku-installer.service
enabled

可以使用以下方法检查Dokku版本:

$dokku version
dokku version 0.21.4

在Ubuntu 20.04 | 18.04上配置Dokku

安装完成后,请转到服务器IP,然后按照Web安装程序配置Dokku。

确认:将使用SSH公钥访问Dokku应用程序。为Dokku提供FQDN主机名以用于应用程序URL检查使用虚拟主机命名将应用程序以主机名部署在Dokku上

然后单击"完成设置"按钮以完成在Ubuntu 20.04 | 18.04上安装Dokku。

请注意,一旦保存设置,网络管理员将自行终止,我们应该可以运行或者部署到Dokku安装。

在Ubuntu 20.04 | 18.04上升级Dokku

要将Dokku升级到最新的稳定版本,请使用okku-update命令:

sudo dokku ps:stopall
sudo apt update
sudo apt install -qq -y dokku herokuish sshcommand plugn gliderlabs-sigil
sudo sudo apt upgrade

使用上述命令升级Dokku不会影响正在运行的dokku,并且会自动为我们提供许多升级说明。如果要在升级后重建所有应用程序,请使用:

sudo dokku ps:rebuildall

安装Dokku插件

Dokku提供了一些插件来管理其他功能。全部可用onDokku有官方插件。这些插件的安装以root用户或者具有sudo特权的用户帐户在Dokku主机上完成。

请参阅以下示例:

安装PostgreSQL数据存储服务:

sudo dokku plugin:install https://github.com/dokku/dokku-postgres.git

安装MariaDB数据存储插件:

sudo dokku plugin:install https://github.com/dokku/dokku-mariadb.git mariadb

将应用程序部署到Dokku

既然我们已经在Ubuntu 20.04 | 18.04系统上安装了有效的Dokku,则可以开始部署应用程序了。我们可以阅读有关将应用程序部署到Dokku的综合教程。