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

Cara Menyebarkan Aplikasi Python Flask API di Docker

Jika Anda baru mengenal Docker dan container, belajar menerapkan aplikasi Python Flask API di Docker adalah cara yang bagus untuk memulai. Docker memungkinkan Anda menyimpan aplikasi dengan teknologi ringan dan keamanan untuk penerapan aplikasi yang cepat.

Dalam tutorial ini, Anda akan belajar menjadi master Anda sendiri dalam menyiapkan dan menerapkan aplikasi Python Flask API pada container Docker.

Bersiaplah dan mulai menerapkan!

Prasyarat

Jika Anda ingin mengikuti langkah demi langkah, Anda perlu menginstal yang berikut ini:

  • Mesin Ubuntu dengan Docker terpasang. Tutorial ini menggunakan Ubuntu 18.04.5 LTS dengan Docker v19.03.8.
  • Python v3.9 atau yang lebih baru diinstal pada mesin Ubuntu. Tutorial ini akan menggunakan Python v3.9.2 pada Mesin Ubuntu.
  • Paket Elinks yang diinstal pada mesin Ubuntu digunakan untuk menguji API dalam tutorial ini.

Membuat Aplikasi Python Flask API (GET dan POST API)

Mulailah tutorial ini dengan membuat aplikasi Python Flask. Flask adalah kerangka kerja aplikasi web mikro WSGI ringan yang ditulis dengan Python. Flask menyediakan alat dan fitur praktis dalam membuat aplikasi web dengan Python.

Sebelum membuat aplikasi Python Flask, Anda akan menginstal Python Flask dan lingkungan virtual Python tempat Flask akan menjalankan aplikasi.

1. Masuk ke mesin Ubuntu Anda menggunakan klien SSH favorit Anda.

2. Selanjutnya, jalankan perintah berikut untuk membuat direktori dengan nama ~/docker_python_flask_demo dan beralih ke itu. Direktori ini akan menampung semua file yang dibutuhkan oleh Python dan Docker untuk menjalankan aplikasi.

mkdir ~/docker_python_flask_demo
cd ~/docker_python_flask_demo

3. Jalankan pip perintah di bawah ini untuk install lingkungan virtual Python (virtualenv ) yang dibutuhkan Flask untuk menjalankan aplikasi. Lingkungan virtual Python menawarkan biner Python sendiri dan paket yang diinstal per aplikasi untuk menghindari konflik dengan aplikasi lain.

pip install virtualenv

4. Jalankan virtualenv perintah di bawah ini untuk membuat dan mengaktifkan lingkungan virtual menggunakan venv modul.

virtualenv venv

5. Sekarang, jalankan perintah di bawah ini untuk menginstal flask Python paket dengan pip manajer paket.

pip install flask

6. Jalankan perintah berikut untuk mengaktifkan paket di lingkungan virtual Anda sebelum Anda dapat mulai menginstal atau menggunakannya. Ini mengubah VIRTUAL_ENV variabel lingkungan untuk menunjuk ke lingkungan virtual Anda dan menambahkan biner Python lingkungan virtual ke jalur sehingga Anda menjalankan biner yang benar.

source venv/bin/activate

7. Buat satu file lagi, bernama requirements.txt , dan tentukan ketergantungan aplikasi Flask, seperti yang ditunjukkan di bawah ini.

Flask==2.0.2

8. Buat file teks ~/docker_python_flask_demo/app.py dan isi file dengan kode Python di bawah ini.

Kode Python di bawah ini mengimpor flask Python class dan membuat instance kelas bernama app . app instance kelas berisi dua login() fungsi dijalankan ketika pengguna mengirim permintaan pada /login halaman.

success() fungsi kemudian dijalankan, menampilkan pesan selamat datang "nama-pengguna" di browser.


from flask import Flask , redirect , url_for , request # Importing the class flask
# app is the object or instance of Flask
app = Flask(__name__)
# app.route informs Flask about the URL to be used by function
@app.route('/success/<name>')
# Creating a function named success
def success(name):
    return 'welcome %s' % name

@app.route('/login', methods = ['GET','POST'])
# Creating a function named login 
def login():
    if request.method == 'POST':
       user = request.form['adamlistek']
       return redirect(url_for('success', name = user)) 
    else:
       return "INVALID"
# Programs executes from here in a development server (locally on your system) 
# with debugging enabled. 
  
if __name__ == '__main__':
   app.run(debug = True)

9. Buat satu file lagi dengan nama ~/docker_python_flask_demo/form.html dan copy/paste kode di bawah ini.

Menjalankan kode HTML di bawah ini akan membuat formulir dengan dua input; satu adalah teks untuk memberikan nama Anda, dan yang lainnya adalah tombol kirim.

Segera setelah Anda memberikan nama pengguna dan menekan tombol kirim, permintaan posting dikirim, dan Flask menjalankan fungsi lain dan membuka halaman web baru di http://localhost:5000/success/.

<html>
  <body>
    <form action="http://localhost:5000/login" method="post">
      <p>Please Enter your name</p>
      <p><input type="text" name="adamlistek" /></p>
      <p><input type="submit" value="Submit" /></p>
    </form>
  </body>
</html>

10. Terakhir, jalankan Python perintah di bawah ini untuk memverifikasi aplikasi (app.py ) bekerja secara lokal di sistem Anda.

Python app.py

Seperti yang Anda lihat di bawah, aplikasi berjalan dengan sukses di mesin Ubuntu tetapi tidak di Docker. Anda akan meluncurkan aplikasi yang sama di Docker di bagian berikut.

Membuat Dockerfile untuk Menerapkan Aplikasi Python Flask API

Anda baru saja membuat dan memverifikasi bahwa aplikasi Python Flask berfungsi secara lokal di mesin Anda. Namun sebelum men-deploy aplikasi di Docker, Anda harus membuat Dockerfile terlebih dahulu untuk menentukan semua rangkaian instruksi untuk membangun image Docker.

Buat file bernama Dockerfile di ~/docker_python_flask_demo direktori, dan salin/tempel konten di bawah ini ke Dockerfile.

Docker akan menggunakan Dockerfile ini untuk menjalankan semua instruksi atau perintah yang diperlukan untuk membangun image Docker baru di atas image dasar (ubuntu:18.04 ).

# Sets the base image for subsequent instructions
FROM ubuntu:18.04
# Sets the working directory in the container  
WORKDIR /app
RUN apt-get update -y
RUN apt-get install -y python-pip python-dev
# Copies the files to the working directory
COPY form.html /app/form.html
# Copies the dependency files to the working directory
COPY requirements.txt /app/requirements.txt
# Install dependencies
RUN pip install -r requirements.txt
# Copies everything to the working directory
COPY . /app
# Command to run on container start    
CMD [ "python" , "./app.py" ]

Sekarang, jalankan tree perintah di bawah ini untuk memverifikasi semua file yang diperlukan untuk menjalankan aplikasi Python Flask ada di direktori kerja (~/docker_python_flask_demo ).

tree  

Membangun Gambar Docker untuk Aplikasi Python Flask API

Anda sekarang memiliki file yang diperlukan untuk menerapkan aplikasi Python Flask, tetapi file tersebut tidak akan melakukan apa pun kecuali Anda membuat gambar. Anda akan menjalankan docker build perintah untuk membuat image Docker berdasarkan instruksi yang Anda atur di Dockerfile.

Jalankan docker build perintah di bawah ini untuk membuat image Docker di direktori kerja (. ). Tag perintah ini (-t ) gambar sebagai flask-image versi 1 (:v1 ).

sudo docker build -t flask-image:v1 .

Sekarang, jalankan docker perintah di bawah ini untuk menampilkan semua gambar yang tersedia.

sudo docker images

Di bawah, Anda dapat melihat berbagai atribut yang dikembalikan, seperti REPOSITORY . Perhatikan REPOSITORY namanya adalah gambar labu dan diberi tag dengan versi (v1 ), seperti yang ditunjukkan di bawah ini.

Menjalankan Aplikasi Python Flask di Docker Container

Setelah membuat gambar Docker, Anda sekarang dapat menjalankan aplikasi flash Python dalam wadah Docker. Wadah Docker mengemas kode dan dependensinya untuk menjalankan aplikasi dengan cepat.

1. Jalankan docker run perintah di bawah ini untuk melakukan hal berikut:

  • Mulai penampung dalam mode terpisah (-d ), sehingga berjalan sebagai proses latar belakang dan mengembalikan keluaran konsol saat dibuat.
  • Memetakan port host Docker (-p 5000:5000 ) dengan port container.
  • Meluncurkan wadah Docker (flask-image:v1 )
sudo docker run -d -p 5000:5000 flask-image:v1

2. Selanjutnya, jalankan docker perintah di bawah ini untuk mendaftar semua kontainer di mesin Docker. Verifikasi apakah Docker berhasil membuat container.

sudo docker ps -a

3. Terakhir, jalankan perintah di bawah ini untuk membuka browser web Anda di mesin Ubuntu menggunakan elinks.

elinks form.html

Perintah membuka browser web di terminal dan meminta nama, seperti yang ditunjukkan di bawah ini.

Masukkan nama Anda dan tekan tombol Kirim.

4. Seperti yang Anda lihat di bawah, setelah menekan tombol Kirim tombol, fungsi login dialihkan ke fungsi sukses di aplikasi Flask.

Kesimpulan

Tutorial ini bertujuan untuk membantu Anda melalui proses menyiapkan wadah Python Flask API Docker menggunakan gambar Docker. Anda juga telah menyentuh tentang cara meluncurkan wadah Python Flask menggunakan Dockerfiles, yang memungkinkan Anda mengedit dan membuat wadah khusus pilihan Anda.

Jadi, aplikasi lain apa yang ingin Anda terapkan di wadah Docker? Mungkin wadah Docker MongoDB?


Docker
  1. Bagaimana Cara Menginstal Flask di Ubuntu 20.04?

  2. Deploy Aplikasi Flask dengan Dokku

  3. Cara Menyebarkan Layanan Mikro dengan Docker

  1. Cara Menyebarkan Aplikasi dengan Rancher

  2. Cara Menyebarkan Wadah nginx dengan Docker di Linode

  3. Cara Menyebarkan PostgreSQL sebagai Wadah Docker

  1. Cara Memasang Flask

  2. Cara Menginstal Flask di Ubuntu 18.04

  3. Cara Deploy Aplikasi Flask dengan Nginx dan Gunicorn di Ubuntu 20.04