GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Cara Meng-host Platform-as-a-Service (PaaS) Anda Sendiri dengan Dokku

Dokku adalah implementasi Platform-as-a-Service (PaaS), yang dapat Anda hosting sendiri di perangkat keras Anda sendiri. Dokku menggunakan Docker untuk menerapkan kode Anda secara otomatis saat Anda git push dari terminal Anda.

Menyiapkan server Dokku memungkinkan Anda menerapkan aplikasi baru dengan cepat menggunakan alur kerja Git yang sudah dikenal. Biaya hosting bisa jauh lebih rendah daripada solusi PaaS komersial dan penawaran Kubernetes terkelola. Setelah server Dokku Anda aktif dan berjalan, peluncuran aplikasi baru hanya akan memakan waktu beberapa saat.

Memulai

Dokku mendukung beberapa metode instalasi. Saat memasang ke perangkat keras bare-metal, gunakan skrip bootstrap resmi untuk mengunduh versi terbaru.

wget https://raw.githubusercontent.com/dokku/dokku/v0.24.7/bootstrap.sh
sudo DOKKU_TAG=v0.24.7 bash bootstrap.sh

Skrip bootstrap akan mengubah instalasi Linux baru menjadi server Dokku yang berfungsi. Ketergantungan perangkat lunak, termasuk Docker, akan diunduh dan diinstal secara otomatis. Prosesnya bisa memakan waktu hingga 10 menit, tergantung koneksi internet Anda.

Anda dapat menjalankan Dokku sebagai wadah Docker. Ini sangat ideal saat Anda menggunakan lingkungan di mana Docker sudah tersedia.

docker run 
    --env DOKKU_HOSTNAME=example.com 
    --name doku
    -p 3022:22 
    -p 8080:80 
    -p 8443:443 
    -v /var/lib/dokku:/mnt/dokku 
    -v /var/run/docker.sock:/var/run/docker.sock 
    dokku/dokku:0.24.7

Ganti example.com dengan nama host yang akan Anda gunakan untuk mengakses server Anda. Dengan menggunakan contoh ini, port 80 dan 443 akan terikat ke port host Anda masing-masing 8080 dan 8443. Port 3022 di host Anda akan dipetakan ke port 22 di dalam container. Port ini digunakan untuk koneksi Git+SSH.

Volume dibuat di /mnt/dokku . Data aplikasi Dokku akan disimpan disini. Soket Docker host juga dipasang ke dalam wadah sehingga Dokku dapat berinteraksi dengan daemon Docker untuk membuat wadah baru.

Mengonfigurasi Dokku

Setelah instalasi selesai, kunjungi alamat IP host Anda di browser Anda. Jika Anda menetapkan nama host Dokku, Anda juga dapat menggunakannya di sini. Pemasang web akan muncul untuk memandu Anda melalui penyiapan lainnya.

Salin dan tempel kunci SSH ke bidang "Kunci Publik". Dokku akan menerima koneksi SSH apa pun yang dibuat dengan kunci ini. Anda dapat menambahkan kunci lain nanti menggunakan Dokku CLI.

Anda juga perlu mengkonfigurasi nama host instalasi Dokku Anda jika belum diatur. Jika Anda memiliki domain yang dipetakan ke mesin Anda, masukkan di sini. Jika tidak, Anda dapat menggunakan localhost atau alamat IP.

Ketika nama host telah disiapkan, Dokku dapat secara otomatis melayani aplikasi Anda menggunakan subdomain individual. Jika Anda tidak memiliki domain yang tersedia, hapus centang pada kotak "Gunakan penamaan virtualhost". Dokku akan melayani setiap aplikasi Anda pada port khusus sebagai gantinya.

Jika Anda menginstal Dokku dengan Docker, pengaturan web tidak didukung. Anda dapat menambahkan nama host saat membuat wadah dengan menyetel DOKKU_HOSTNAME variabel lingkungan. Untuk menambahkan kunci SSH, Anda harus terhubung ke wadah dan menggunakan Dokku CLI:

docker exec -it dokku dokku ssh-keys add my-key < /path/to/key

Setelah Anda menetapkan nama host dan menambahkan kunci SSH, Dokku akan siap digunakan. Tidak ada administrasi lebih lanjut yang dimungkinkan menggunakan UI web. Anda berinteraksi dengan Dokku melalui perintah Git dan CLI.

Menyebarkan Aplikasi

Sekarang, Anda siap meluncurkan aplikasi pertama Anda! Penerapan Dokku dimulai dengan git push . Dokku menggunakan buildpack (baik Cloud Native atau Herokuish) untuk mendeteksi bahasa pemrograman aplikasi Anda dan membuat build secara otomatis.

Dokku juga mendukung menjalankan docker build langsung jika proyek Anda berisi Dockerfile . Fungsionalitas ini hanya dapat digunakan saat builder berbasis buildpack tidak tersedia untuk proyek Anda. Anda bisa mendapatkan informasi lebih lanjut tentang build Docker langsung di dokumentasi Dokku.

Penggunaan buildpack berarti Dokku memberikan sedikit batasan tentang bagaimana proyek Anda dibuat. Jika Anda menggunakan bahasa dan kerangka kerja yang populer, Anda seharusnya dapat git push untuk membuat penerapan Anda. Berikut ini contoh aplikasi React dasar:

mkdir my-app
cd my-app
npx create-react-app .

git remote add dokku [email protected]:my-app
git push dokku master

Dua baris terakhir adalah yang paling penting. Server Dokku Anda ditambahkan sebagai remote Git sehingga Anda dapat memasukkan kode ke dalamnya. Ganti example.com dengan IP atau nama host instalasi Anda. Bagian setelah titik dua menunjukkan proyek Dokku yang akan didorong. Anda tidak perlu membuatnya secara manual.

Setelah remote diatur, Anda siap untuk memasukkan kode ke dalamnya. Contoh perintah mendorong master cabang hingga Dokku. Dokku akan mengambil proyek Anda, mendeteksi secara otomatis buildpack yang sesuai, membuat image Docker, dan men-deploy aplikasi Anda.

Melampirkan Domain Aplikasi

Dokku menyebarkan aplikasi Anda ke subdomain dari nama host Anda. Anda dapat melampirkan domain khusus menggunakan Dokku CLI. Pastikan Anda telah menyiapkan data DNS yang sesuai terlebih dahulu.

dokku domains:add my-app example.com

Mengunjungi example.com sekarang akan melayani my-app . Anda penyebaran.

Menambahkan SSL

Dokku memudahkan untuk mengaktifkan SSL untuk aplikasi Anda. Anda dapat menambahkan plugin yang mengintegrasikan Dokku dengan Let's Encrypt. Setelah plugin diinstal, Anda dapat memperoleh sertifikat SSL dengan satu perintah.

Pertama, instal plugin:

dokku plugin:install https://github.com/dokku/dokku-letsencrypt.git

Selanjutnya, konfigurasikan plugin Let's Encrypt dengan alamat email Anda. Let's Encrypt akan menggunakan alamat ini untuk mengirimi Anda peringatan apa pun yang berkaitan dengan sertifikat Anda.

dokku config:set --global no-restart [email protected]

Anda harus menambahkan tugas cron Let's Encrypt untuk memastikan Dokku dapat memperbarui sertifikat Anda secara otomatis:

dokku letsencrypt:cron-job --add

Terakhir, aktifkan Let's Encrypt untuk aplikasi Anda:

dokku letsencrypt my-app

Plugin Let's Encrypt akan memperoleh sertifikat untuk mencakup domain yang terhubung ke aplikasi Anda. Sertifikat akan diperpanjang secara otomatis sebelum habis masa berlakunya.

Memperbarui Aplikasi Anda

Dokku dibangun di atas alur kerja Git. Anda dapat memperbarui aplikasi dengan membuat perubahan basis kode, membuat komit Git, lalu mendorong cabang Anda ke Dokku.

Saat Dokku menerima push baru, ia menggunakan buildpack-nya untuk membuat container Docker yang diperbarui. Kontainer yang sedang berjalan akan diganti dengan yang baru setelah pembangunan selesai. Pembaruan tidak memerlukan waktu henti dan sepenuhnya otomatis.

Durasi proses build akan bervariasi tergantung pada ukuran aplikasi Anda dan teknologi yang digunakannya. Dokku menunggu 10 detik lagi setelah pembangunan selesai sebelum lalu lintas diarahkan ke kontainer baru. Ini memberikan kesempatan untuk menyelesaikan skrip bootstrap.

Dokku dapat dengan mudah diintegrasikan ke dalam sistem continuous integration (CI). Tahap terakhir dalam pipeline CI dapat berupa git push dokku untuk memperbarui penerapan langsung Anda.

Mengelola Cabang

Dokku biasanya menerapkan perubahan yang dibuat pada master cabang. Anda dapat memilih untuk menggunakan cabang lain menggunakan setelan global atau per aplikasi:

dokku git:set --global deploy-branch dokku-deploy

dokku git:set my-app deploy-branch production

Dengan konfigurasi ini, Dokku akan melakukan deployment dari dokku-deploy cabang. Penerapan untuk my-app aplikasi akan dibuat dari production sebagai gantinya.

Menambahkan Fungsionalitas Ekstra

Ada lebih banyak hal di Dokku daripada penerapan dasar yang kami fokuskan di sini. Distribusi default sengaja disederhanakan. Plugin resmi dan komunitas dapat digunakan untuk menyediakan layanan, seperti database dan otentikasi. Ini memungkinkan Anda menggunakan Dokku untuk backend stateful serta frontend statis Anda.

Menyiapkan layanan umumnya merupakan proses dua langkah. Anda membuat instance layanan dan kemudian menautkannya ke aplikasi Anda. Beberapa aplikasi dapat dihubungkan ke setiap instance layanan.

Berikut cara menambahkan database MySQL ke aplikasi:

dokku plugin:install https://github.com/dokku/dokku-mysql.git

dokku mysql:create demo-db

dokku mysql:link demo-db my-app

Dokku akan menyetel DATABASE_URL variabel lingkungan di dalam wadah aplikasi Anda. Anda dapat mengakses variabel ini untuk mengambil string koneksi MySQL. Menggunakan plugin Dokku untuk database menghilangkan kebutuhan untuk mengelola server database eksternal lainnya.

Kesimpulan

Docker adalah solusi PaaS yang memungkinkan Anda meng-host platform aplikasi Anda sendiri. Setelah Dokku aktif dan berjalan, meluncurkan aplikasi baru semudah git push .

Dokku lebih baik dibandingkan dengan layanan seperti Heroku, Amazon Elastic Beanstalk, dan Google Firebase. Ini mendukung sejumlah besar teknologi pengembangan dan berarti Anda tidak terikat dengan penyedia cloud tertentu. Anda dapat menjalankan Dokku pada VM berbasis cloud yang murah atau menyimpannya di perangkat keras fisik Anda sendiri.


Docker
  1. Cara menginstal dan menghosting server OpenVPN dengan Docker

  2. Cara Menginstal Jenkins dengan Docker

  3. Cara Menyebarkan Layanan Mikro dengan Docker

  1. Cara Menyebarkan Aplikasi dengan Rancher

  2. Cara Menyebarkan Wadah nginx dengan Docker di Linode

  3. Cara Berbagi Gambar Docker Dengan Orang Lain

  1. Bagaimana dan Mengapa Menggunakan Host Docker Jarak Jauh

  2. Cara Memasang Direktori Host Ke Wadah Docker

  3. Cara Menginstal Nextcloud dengan Docker di Server Linux Anda