Dokku adalah Platform-as-a-Service (PaaS) yang dihosting sendiri yang membuat penerapan aplikasi menjadi sederhana menggunakan Git. Meskipun implementasi Dokku mirip dengan Heroku, ia tidak memiliki fitur utama tertentu seperti penskalaan otomatis. Dokku adalah alat yang sangat kuat yang secara otomatis menjalankan aplikasi Anda di dalam Docker dan memerlukan konfigurasi server web yang minimal.
Panduan ini menunjukkan cara:
- Buat aplikasi Flask yang menampilkan 'Hello World!' pada halaman indeks
- Instal Dokku di Linode
- Menyebarkan aplikasi Flask dengan server WSGI di dalam wadah Docker
- Tambahkan sertifikat SSL melalui Dokku dengan plugin Let's Encrypt
Sebelum Anda Mulai
Di Komputer Lokal Anda
Catatan Dokku v0.12.5 kompatibel dengan Ubuntu 16.04 x64, Ubuntu 14.04 x64, dan Debian 8.2 x64. CentOS 7 x64 hanya didukung secara eksperimental, dan oleh karena itu beberapa langkah seperti mengonfigurasi kunci SSH dan host virtual harus dilakukan secara manual menggunakan antarmuka baris perintah dokku. Lihat dokumentasi resmi untuk informasi lebih lanjut.
Kunci publik diasumsikan tersedia. Biasanya ini terletak di ~/home/username/.ssh/id_rsa.pub
.
Instal Git jika diperlukan:
sudo apt install git
Di Linode Anda
Skrip pemasangan Dokku membuat dokku
pengguna pada sistem, menginstal Docker, dan menarik gambar yang relevan.
-
Download script install dari Dokku lalu jalankan script:
wget https://raw.githubusercontent.com/dokku/dokku/v0.12.5/bootstrap.sh sudo DOKKU_TAG=v0.12.5 bash bootstrap.sh
Preparing to install v0.11.6 from https://github.com/dokku/dokku.git... For dokku to build containers, it is strongly suggested that you have 1024 megabytes or more of free memory If necessary, please consult this document to setup swap: http://dokku.viewdocs.io/dokku/advanced-installation/#vms-with-less-than-1gb-of-memory --> Ensuring we have the proper dependencies --> Initial apt-get update --> Installing docker --> NOTE: Using Linode? Docker may complain about missing AUFS support. You can safely ignore this warning. Installation will continue in 10 seconds. ...
-
Arahkan ke alamat IP publik Linode Anda di browser dan masukkan kunci publik:
Hati-hati Tambahkan kunci publik segera setelah menjalankan skrip instalasi untuk menghindari orang lain menambahkan kunci publik ke Dokku. Untuk pemasangan tanpa pengawasan, lihat petunjuk pemasangan lanjutan.
-
Untuk menambahkan kunci SSH tambahan, pipa output melalui SSH ke
dokku
pengguna. Gantiexample.com
dengan alamat IP Linode Anda.cat ~/.ssh/id_rsa.pub | ssh [email protected] ssh-keys:add new-key
Buat Aplikasi Flask
-
Di komputer lokal Anda, buat direktori proyek baru:
mkdir flask-example && cd flask-example
-
Buat file baru bernama
hello_world.py
yang menyajikan 'Hello World!' di halaman indeks.- File:hello_world .py
1 2 3 4 5 6 7 8 9 10 11 12 13 14
import os from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return 'Hello World!' if __name__ == '__main__': # Bind to PORT if defined, otherwise default to 5000. port = int(os.environ.get('PORT', 5000)) app.run(host='127.0.0.1', port=port)
-
Tambahkan
requirements.txt
file untuk melacak versi dependensi aplikasi Flask. Gunicorn adalah server WSGI yang digunakan untuk memungkinkan Flask berinteraksi dengan benar dengan NGINX.- File:persyaratan .txt
1 2
Flask==0.12.1 gunicorn==19.7.1
-
Untuk proyek yang lebih kompleks dengan banyak dependensi menggunakan lingkungan virtual, alihkan output
pip freeze
kerequirements.txt
.pip freeze > requirements.txt
Tambahkan gitignore
Secara opsional, tambahkan .gitignore
file agar Git menghilangkan caching dan file lingkungan virtual dari kontrol versi.
- File:. .gitignore
1 2 3 4
__pycache__/ *.pyc venv/
Procfile
Procfile memberi tahu server Gunicorn perintah apa yang harus digunakan saat meluncurkan aplikasi:
- File:Procfile
1
web: gunicorn hello_world:app --workers=4
Catatan 4 pekerja adalah default yang baik untuk aplikasi web yang berjalan di Linode. Lihat dokumenGunicorn untuk informasi lebih lanjut tentang menentukan jumlah pekerja yang benar untuk aplikasi khusus Anda.
Git Remote
-
Inisialisasi repositori Git:
git init git add . git commit -m "Deploy Flask with Dokku"
-
Tambahkan remote bernama
dokku
dengan nama penggunadokku
dan gantiexample.com
dengan alamat IP publik Linode Anda:git remote add dokku [email protected]:flask-example
-
Pastikan remote telah ditambahkan:
git remote -v
Ini akan mencantumkan remote.
dokku [email protected]:flask-example (fetch) dokku [email protected]:flask-example (push)
Singkatnya, tata letak proyek terlihat seperti:
flask-example ├── .gitignore ├── Procfile ├── hello_world.py └── requirements.txt
Buat Proyek di Host Dokku
-
SSH ke Linode Anda dan buat aplikasinya:
dokku apps:create flask-example
-
Pastikan VHOST diaktifkan.
dokku domains:enable flask-example
Menyebarkan Aplikasi Flask
-
Di komputer lokal Anda, gunakan aplikasi Flask dengan mendorong cabang ke
dokku
terpencil. Ini akan menangani NGINX di belakang layar dan mengekspos port80
:git push dokku master
Cabang lokal lainnya juga dapat di-deploy tetapi, semua cabang harus didorong ke cabang master
dokku
jarak jauh:git push dokku branch-name:master
-
curl
alamat IP Linode Anda untuk menguji apakah aplikasi berhasil diterapkan:curl example.com
Hello World!
Sertifikat SSL dengan Dokku dan Let's Encrypt
Langkah selanjutnya dalam panduan ini harus dilakukan dari Linode Anda.
-
Instal plugin Let's Encrypt untuk Dokku:
sudo dokku plugin:install https://github.com/dokku/dokku-letsencrypt.git
-
Setel
DOKKU_LETSENCRYPT_EMAIL
variabel lingkungan ke email untuk Let's Encrypt:dokku config:set flask-example [email protected]
-
Tambahkan aplikasi dan domain:
dokku domains:add flask-example example.com
-
Buat sertifikat SSL. NGINX akan secara otomatis mulai melayani aplikasi melalui HTTPS pada port 443:
dokku letsencrypt flask-example
-
Jalankan ini sebagai tugas cron sehingga sertifikat akan diperbarui secara otomatis:.
dokku letsencrypt:cron-job --add
Catatan Ini membutuhkan Dokku versi 0.5 atau lebih tinggi. Periksa dengan menjalankan
dokku version
.
Mulai, Hentikan, dan Mulai Ulang Aplikasi
-
Daftar semua aplikasi Dokku yang berjalan:
dokku apps
-
Mulai ulang aplikasi:
dokku ps:restart flask-example
-
Menghentikan aplikasi:
dokku ps:stop flask-example
-
Pulihkan semua aplikasi setelah reboot:
dokku ps:restore
Melihat Log Aplikasi
Lihat log aplikasi melalui Dokku atau container Docker.
-
Untuk melihat log melalui Dokku:
dokku logs flask-example
-
Daftar semua container Docker yang berjalan:
sudo docker ps -a
-
Temukan ID penampung lalu jalankan:
sudo docker logs container_id
Skala Aplikasi
Dokku tidak menskalakan aplikasi secara otomatis, dan secara default hanya akan menjalankan satu web
proses. Untuk menambah jumlah container yang menjalankan aplikasi Anda, Anda dapat menggunakan ps:scale
perintah.
-
Periksa berapa banyak pekerja yang dimiliki aplikasi Anda saat ini:
dokku ps:scale flask-example
-----> Scaling for flask-example -----> proctype qty -----> -------- --- -----> web 1
-
Skalakan hingga 4
web
proses:dokku ps:scale flask-example web=4
-
Konfirmasikan bahwa proses baru sedang berjalan:
-----> Scaling for flask-example -----> proctype qty -----> -------- --- -----> web 4
Dokku adalah alternatif open source untuk Heroku untuk aplikasi kecil. Menyebarkan aplikasi semudah mendorong ke remote dengan Git. Elemen seperti Docker dan NGINX diabstraksikan untuk meminimalkan waktu penerapan. Ada fitur tambahan seperti kait pra-penerapan dan basis data penautan yang tidak ditampilkan dalam panduan ini.
Informasi Lebih Lanjut
Anda mungkin ingin berkonsultasi dengan sumber daya berikut untuk informasi tambahan tentang topik ini. Meskipun ini disediakan dengan harapan dapat bermanfaat, harap perhatikan bahwa kami tidak dapat menjamin keakuratan atau ketepatan waktu materi yang dihosting secara eksternal.
- Dokku PaaS
- Termos