GNU/Linux >> Belajar Linux >  >> Debian

Aplikasi Dockerizing Flask Menggunakan Docker di Debian 10

Docker adalah alat sumber terbuka yang dirancang untuk memudahkan pembuatan, penerapan, dan menjalankan aplikasi dengan menggunakan wadah. Wadah adalah paket perangkat lunak yang mengemas kode dan semua dependensinya sehingga aplikasi berjalan dengan cepat dan andal dari satu lingkungan komputasi ke lingkungan komputasi lainnya.

Flask adalah kerangka kerja web Python yang populer. Ini diklasifikasikan sebagai kerangka mikro karena tidak memerlukan alat atau pustaka tertentu. Dibandingkan dengan kerangka kerja lain, kerangka ini ringan dan sangat terstruktur.

Dalam tutorial ini, kami akan menjelaskan cara men-deploy aplikasi Flask dengan Docker di server Debian 10.

Prasyarat

  • Server yang menjalankan Debian 10.
  • Kata sandi root dikonfigurasi di server Anda.

Memulai

Sebelum memulai, sebaiknya perbarui paket sistem Anda ke versi terbaru. Anda dapat memperbarui semua paket dengan perintah berikut:

apt-get update -y
apt-get upgrade -y

Setelah semua paket diperbarui, mulai ulang sistem Anda untuk menerapkan perubahan.

Instal Dependensi yang Diperlukan

Selanjutnya, Anda perlu menginstal server web Nginx dan dependensi lainnya di sistem Anda. Anda dapat menginstal semuanya menggunakan perintah berikut:

apt-get install nginx apt-transport-https ca-certificates curl gnupg2 software-properties-common curl -y

Setelah semua paket terinstal, Anda dapat melanjutkan ke langkah berikutnya.

Instal Docker

Secara default, versi terbaru Docker tidak tersedia di repositori Debian 10. Jadi, sebaiknya Anda menginstalnya dari repositori resmi Docker.

Pertama, unduh dan tambahkan kunci GPG dengan perintah berikut:

wget https://download.docker.com/linux/debian/gpg apt-key tambahkan gpg

Selanjutnya, tambahkan repositori Docker dengan perintah berikut:

add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian buster stable"

Selanjutnya, perbarui repositori dan instal Docker dengan perintah berikut:

apt-get update -y
apt-get install docker-ce -y

Setelah instalasi berhasil diselesaikan, verifikasi status Docker dengan perintah berikut:

systemctl status buruh pelabuhan

Anda akan mendapatkan output berikut:

? docker.service - Mesin Kontainer Aplikasi Docker Dimuat:dimuat (/lib/systemd/system/docker.service; diaktifkan; preset vendor:diaktifkan) Aktif:aktif (berjalan) sejak Sun 2020-04-19 06:26:25 UTC; 1 menit 8 detik yang lalu Dokumen:https://docs.docker.com PID Utama:8883 (dockerd) Tugas:10 Memori:46.6M CGroup:/system.slice/docker.service ??8883 /usr/bin/dockerd -H fd :// --containerd=/run/containerd/containerd.sockApr 19 06:26:24 debian10 dockerd[8883]:time="2020-04-19T06:26:24,413828757Z" level=warning msg="Kernel Anda melakukannya tidak mendukung batas memori swap 19 April 06:26:24 debian10 dockerd[8883]:time="2020-04-19T06:26:24.413876690Z" level=warning msg="Kernel Anda tidak mendukung periode rt cgroup"19 April 06:26:24 debian10 dockerd[8883]:time="2020-04-19T06:26:24.413889604Z" level=warning msg="Kernel Anda tidak mendukung cgroup rt runtimeApr 19 06:26:24 debian10 dockerd[8883]:waktu ="2020-04-19T06:26:24.414115814Z" level=info msg="Memuat kontainer:mulai." 19 Apr 06:26:24 debian10 dockerd[8883]:time="2020-04-19T06:26:24.788332166 Z" level=info msg="Jembatan default (docker0) ditetapkan dengan IP 19 April 06:26:24 debian10 dockerd[8883]:time="2020-04-19T06:26:24.972022325Z" lev el=info msg="Memuat wadah:selesai." 19 April 06:26:25 debian10 dockerd[8883]:time="2020-04-19T06:26:25.010940205Z" level=info msg="Docker daemon" commit=afacb8b7f0 graphdriver(s)=oApr 19 06:26:25 debian10 dockerd[8883]:time="2020-04-19T06:26:25.011145541Z" level=info msg="Daemon telah menyelesaikan inisialisasi"19 Apr 06:26:25 debian10 systemd[1]:Memulai Mesin Kontainer Aplikasi Docker. 19 Apr 06:26:25 debian10 dockerd[8883]:time="2020-04-19T06:26:25.074603639Z" level=info msg="API mendengarkan pada / var/run/docker.sock"

Pada titik ini, Docker diinstal dan dijalankan. Sekarang Anda dapat melanjutkan ke langkah berikutnya.

Setup Struktur Direktori Flask

Selanjutnya, Anda perlu membuat struktur direktori untuk menampung aplikasi Flask Anda.

Mari kita buat direktori bernama flask di dalam direktori /var/www/:

mkdir -p /var/www/flask

Selanjutnya, ubah direktori menjadi flask dan buat struktur direktori untuk flask:

cd /var/www/flask
mkdir -p app/static
mkdir -p app/templates

Direktori statis digunakan untuk menyimpan file gambar, CSS, dan JavaScript sedangkan direktori template digunakan untuk menyimpan template HTML untuk proyek Anda.

Selanjutnya, Anda perlu membuat file __init__.py di dalam direktori aplikasi:

aplikasi nano/__init__.py

Tambahkan konten berikut untuk membuat instance Flask dan mengimpor logika dari file views.py:

dari impor flask Flaskapp =Flask(__name__)dari tampilan impor aplikasi

Simpan dan tutup file, lalu buat file views.py di direktori aplikasi Anda.

nano app/views.py

Tambahkan baris berikut

from app import [email protected]('/')def home():mengembalikan "hello world!"

Simpan dan tutup file kemudian buat file uwsgi.ini dengan perintah berikut:

nano uwsgi.ini

File ini akan berisi konfigurasi uWSGI untuk aplikasi kita seperti yang ditunjukkan di bawah ini:

[uwsgi]module =maincallable =appmaster =true

Simpan dan tutup file setelah Anda selesai. uWSGI adalah opsi penerapan untuk Nginx yang merupakan protokol dan server aplikasi.

Selanjutnya, Anda perlu membuat file main.py untuk mengimpor aplikasi bernama instance Flask dari paket aplikasi. Anda dapat membuatnya dengan perintah berikut:

nano main.py

Tambahkan baris berikut:

dari aplikasi impor aplikasi

Simpan dan tutup file setelah Anda selesai. Selanjutnya, buat file requirements.txt untuk menentukan dependensi yang akan diinstal oleh manajer paket pip ke penerapan Docker Anda:

persyaratan nano.txt

Tambahkan baris berikut yang sesuai dengan Flask versi terbaru:

Flask==1.1.2

Simpan dan tutup file setelah Anda selesai.

Pada titik ini, aplikasi Flask Anda telah berhasil dikonfigurasi. Sekarang Anda dapat melanjutkan ke langkah berikutnya.

Konfigurasikan Docker untuk Menyebarkan Flask

Selanjutnya, Anda perlu membuat Dockerfile untuk membangun dan men-deploy aplikasi flask.

Pertama, buat Dockerfile dengan perintah berikut:

cd /var/www/flask
nano Dockerfile

Tambahkan baris berikut:

FROM tiangolo/uwsgi-nginx-flask:python3.6-alpine3.7RUN apk --update add bash nanoENV STATIC_URL /staticENV STATIC_PATH /var/www/app/staticCOPY ./requirements.txt /var/www/requirements. txtRUN pip install -r /var/www/requirements.txt

Simpan dan tutup file setelah Anda selesai. Selanjutnya, buat skrip start.sh untuk membuat image dari Dockerfile dan buat container dari image Docker yang dihasilkan.

nano start.sh

Tambahkan baris berikut:

#!/bin/bashapp="docker.test"docker build -t ${app} .docker run -d -p 56733:80 \ --name=${app} \ -v $PWD:/app ${app}

Simpan dan tutup file setelah Anda selesai.

Catatan :Pastikan port 56733 gratis dan dapat digunakan.

Terakhir, jalankan skrip menggunakan perintah berikut:

bash start.sh

Ini akan membuat gambar Docker dan membangun wadah dari gambar yang dihasilkan seperti yang ditunjukkan di bawah ini:

Mengirim konteks build ke daemon Docker 9.728kBSLangkah 1/6 :DARI tiangolo/uwsgi-nginx-flask:python3.6-alpine3.7python3.6-alpine3.7:Menarik dari tiangolo/uwsgi-nginx-flask48ecbb6b270e:Tarik selesai 692f29ee68fa:Tarik selesai f75fc7ac1098:Tarik lengkap c30e40bb471c:Tarik selesai Berhasil dibuat f5de17e1ce82Berhasil menandai docker.test:latest22cd2bd23c9190cf2900fa1d7c55e4765a266e68c74dc1e6858872e9e 

Anda sekarang dapat membuat daftar container yang sedang berjalan dengan perintah berikut:

docker ps

Anda akan mendapatkan output berikut:

PERINTAH GAMBAR ID PENAMPUNG NAMA PORT STATUS DIBUAT 22cd2bd23c91 docker.test "/entrypoint.sh /sta..." Sekitar satu menit yang lalu Naik Sekitar satu menit 443/tcp, 0.0.0.0:56733->80/tcp docker.test 

Anda juga dapat memverifikasi wadah Docker dengan mengunjungi URL http://your-server-ip:56733. Anda akan melihat layar berikut:

Menyebarkan File Template

Anda juga dapat menggunakan file template untuk menyajikan konten statis dan dinamis. Anda dapat membuat templat beranda untuk aplikasi Anda dengan perintah berikut:

nano app/templates/home.html

Tambahkan kode berikut:

    Welcome Flask   

Home Page

Ini adalah halaman awal dari aplikasi flask kita.

Simpan dan tutup file setelah Anda selesai. Selanjutnya, Anda perlu memodifikasi file views.py untuk menyajikan file yang baru dibuat:

nano app/views.py

Perbarui file seperti yang ditunjukkan di bawah ini:

from flask import render_templatefrom app import [email protected]('/')def home():return "hello world!"@app.route('/template')def template():return render_template('home .html')

Simpan dan tutup file. Kemudian, Anda perlu memulai ulang wadah Docker untuk menerapkan perubahan.

Anda dapat memulai ulang wadah Docker bernama docker.test dengan perintah berikut:

docker stop docker.test
docker start docker.test

Sekarang, buka browser web Anda dan ketik URL http://your-server-ip:56733/template. Anda akan melihat template yang baru dibuat di layar berikut:

Kesimpulan

Selamat! Anda telah berhasil men-deploy aplikasi Flask dengan Docker di server Debian 10. Anda sekarang dapat mereplikasi aplikasi di server yang berbeda dengan konfigurasi ulang minimal. Jangan ragu untuk bertanya kepada saya jika Anda memiliki pertanyaan.


Debian
  1. Cara Memasang Mesin Docker di Debian 11

  2. Debian – Menggunakan Dua Tampilan Di Debian?

  3. Debian – Menggunakan Live-helper Offline?

  1. Cara Menginstal Docker di Debian 10 Buster

  2. Panduan Docker:Aplikasi Dockerisasi Python Django

  3. Menginstal dan Menggunakan Docker di Ubuntu dan Debian

  1. Panduan Docker:Aplikasi Dockerizing Nodejs Express di Ubuntu 18.04

  2. Cara Menginstal Docker di Debian 11

  3. Cara Menginstal Docker di Debian 9