Bagikan melalui


Membangun dan menjalankan aplikasi web Python dalam kontainer secara lokal dengan MongoDB

Artikel ini adalah bagian dari tutorial tentang cara membuat kontainer dan menyebarkan aplikasi web Python dalam kontainer ke Azure App Service. App Service memungkinkan Anda menjalankan aplikasi web kontainer dan menyebarkan melalui kemampuan integrasi berkelanjutan/penyebaran berkelanjutan (CI/CD) dengan Docker Hub, Azure Container Registry, dan Visual Studio Team Services. Di bagian tutorial ini, Anda mempelajari cara membangun dan menjalankan aplikasi web Python dalam kontainer secara lokal. Langkah ini bersifat opsional dan tidak diperlukan untuk menyebarkan aplikasi sampel ke Azure.

Menjalankan gambar Docker secara lokal di lingkungan pengembangan Anda memerlukan penyiapan di luar penyebaran ke Azure. Anggap saja sebagai investasi yang dapat membuat siklus pengembangan di masa depan lebih mudah, terutama ketika Anda bergerak melampaui aplikasi sampel dan Anda mulai membuat aplikasi web Anda sendiri. Untuk menyebarkan aplikasi sampel untuk Django dan Flask, Anda dapat melewati langkah ini dan pergi ke langkah berikutnya dalam tutorial ini. Anda selalu dapat kembali setelah menyebarkan ke Azure dan bekerja melalui langkah-langkah ini.

Diagram layanan berikut menyoroti komponen yang tercakup dalam artikel ini.

A screenshot of the Tutorial - Containerized Python App on Azure with local part highlighted.

1. Kloning atau unduh aplikasi sampel

Mengklon repositori:

# Django
git clone https://github.com/Azure-Samples/msdocs-python-django-container-web-app.git

# Flask
git clone https://github.com/Azure-Samples/msdocs-python-flask-container-web-app.git

Kemudian navigasi ke folder itu:

# Django
cd msdocs-python-django-container-web-app

# Flask
cd msdocs-python-flask-container-web-app

2. Buat gambar Docker

Jika Anda menggunakan salah satu aplikasi sampel kerangka kerja yang tersedia untuk Django dan Flask, Anda diatur untuk pergi. Jika Anda bekerja dengan aplikasi sampel Anda sendiri, lihat untuk melihat bagaimana aplikasi sampel disiapkan, khususnya Dockerfile di direktori akar.

Instruksi ini memerlukan Visual Studio Code dan ekstensi Docker. Buka folder sampel yang Anda kloning atau unduh dan buka Visual Studio Code dengan perintah code ..

Catatan

Langkah-langkah di bagian ini mengharuskan daemon Docker berjalan. Dalam beberapa instalasi, misalnya di Windows, Anda perlu membuka Docker Desktop, yang memulai daemon, sebelum melanjutkan.

Petunjuk Cuplikan layar
Buka ekstensi Docker.

Jika ekstensi Docker melaporkan kesalahan "Gagal tersambung", pastikan Docker diinstal dan berjalan. Jika ini pertama kalinya Anda bekerja dengan Docker, Anda mungkin tidak akan memiliki kontainer, gambar, atau registri yang terhubung.
A screenshot showing how to open the Docker extension in Visual Studio Code.
Buat gambar.
  • Di penjelajah proyek memperlihatkan file proyek, klik kanan Dockerfile dan pilih Bangun Gambar....

  • Secara bergantian, Anda dapat menggunakan Palet Perintah (F1 atau Ctrl+Shift+P) dan mengetik "Gambar Docker: Gambar Build" untuk memanggil perintah.

Untuk informasi selengkapnya tentang sintaks Dockerfile, lihat referensi Dockerfile.
A screenshot showing how to build the Docker image in Visual Studio Code.
Konfirmasikan bahwa gambar telah dibuat.
  • Buka bagian IMAGES dari ekstensi Docker.

  • Cari gambar yang baru-baru ini dibuat. Nama gambar kontainer adalah "msdocspythoncontainerwebapp", yang diatur dalam file .vscode/tasks.json .

A screenshot showing how to confirm the built image in Visual Studio Code.

Pada titik ini, Anda telah membangun gambar secara lokal. Gambar yang Anda buat memiliki nama "msdocspythoncontainerwebapp" dan tag "latest". Tag adalah cara untuk menentukan informasi versi, penggunaan yang dimaksudkan, stabilitas, atau informasi lainnya. Untuk informasi selengkapnya, lihat Rekomendasi untuk memberi tag dan membuat versi citra kontainer.

Gambar yang dibangun dari VISUAL Code atau dari menggunakan Docker CLI secara langsung juga dapat dilihat dengan aplikasi Docker Desktop .

3. Menyiapkan MongoDB

Untuk tutorial ini, Anda memerlukan database MongoDB bernama restaurants_reviews dan koleksi bernama restaurants_reviews. Langkah-langkah di bagian ini menunjukkan kepada Anda cara menggunakan penginstalan lokal MongoDB atau Azure Cosmos DB untuk MongoDB untuk membuat dan mengakses database dan koleksi.

Penting

Jangan gunakan database MongoDB yang akan Anda gunakan dalam produksi. Dalam tutorial ini, Anda akan menyimpan string koneksi MongoDB dalam variabel lingkungan. Ini membuatnya dapat diamati oleh siapa pun yang mampu memeriksa kontainer Anda (misalnya, menggunakan docker inspect).

Langkah 1: Instal MongoDB jika belum.

Anda dapat memeriksa instalasi MongoDB dengan menggunakan MongoDB Shell (mongosh).

  • Perintah berikut memasukkan shell dan memberi Anda versi server mongosh dan mongoDB yang diinstal pada sistem Anda:

    mongosh
    
  • Perintah berikut hanya memberi Anda versi server MongoDB yang diinstal pada sistem Anda:

    mongosh --quiet --exec 'db.version()'
    

Jika perintah ini tidak berfungsi, Anda mungkin perlu menginstal mongosh secara eksplisit atau menyambungkan mongosh ke server MongoDB Anda.

Alternatif dalam beberapa instalasi adalah langsung memanggil daemon Mongo.

mongod --version

Langkah 2: Edit file mongod.cfg untuk menambahkan alamat IP komputer Anda.

File konfigurasi mongod memiliki bindIp kunci yang menentukan nama host dan alamat IP yang didengarkan MongoDB untuk koneksi klien. Tambahkan IP komputer pengembangan lokal Anda saat ini. Aplikasi sampel yang berjalan secara lokal dalam kontainer Docker akan berkomunikasi ke komputer host dengan alamat ini.

Misalnya, bagian dari file konfigurasi akan terlihat seperti ini:

net:
  port: 27017
  bindIp: 127.0.0.1,<local-ip-address>

Mulai ulang MongoDB untuk mengambil perubahan pada file konfigurasi.

Langkah 3: Buat database dan koleksi di database MongoDB lokal.

Atur nama database ke "restaurants_reviews" dan nama koleksi ke "restaurants_reviews". Anda dapat membuat database dan koleksi dengan ekstensi VS Code MongoDB, MongoDB Shell (mongosh), atau alat sadar MondoDB lainnya.

Untuk shell MongoDB, berikut adalah contoh perintah untuk membuat database dan koleksi:

> help
> use restaurants_reviews
> db.restaurants_reviews.insertOne({})
> show dbs
> exit

Pada titik ini, string koneksi MongoDB lokal Anda adalah "mongodb://127.0.0.1:27017/", nama database adalah "restaurants_reviews", dan nama koleksinya adalah "restaurants_reviews".

4. Jalankan gambar secara lokal dalam kontainer

Dengan informasi tentang cara menyambungkan ke MongoDB, Anda siap untuk menjalankan kontainer secara lokal. Aplikasi sampel mengharapkan informasi koneksi MongoDB diteruskan dalam variabel lingkungan. Ada beberapa cara untuk mendapatkan variabel lingkungan yang diteruskan ke kontainer secara lokal. Masing-masing memiliki kelebihan dan kekurangan dalam hal keamanan. Anda harus menghindari pemeriksaan informasi sensitif apa pun atau meninggalkan informasi sensitif dalam kode dalam kontainer.

Catatan

Saat disebarkan ke Azure, aplikasi web akan mendapatkan info koneksi dari nilai lingkungan yang ditetapkan sebagai pengaturan konfigurasi App Service dan tidak ada modifikasi untuk skenario lingkungan pengembangan lokal yang berlaku.

Petunjuk Cuplikan layar
Di folder .vscode aplikasi sampel, file settings.json menentukan apa yang terjadi saat Anda menggunakan ekstensi Docker dan memilih Jalankan atau Jalankan Interaktif dari menu konteks Tag. File settings.json berisi dua templat masing-masing untuk (MongoDB local) skenario dan (MongoDB Azure) .

Jika Anda menggunakan database MongoDB lokal:
  • Ganti kedua instans <YOUR_IP_ADDRESS> dengan alamat IP Anda.

  • Ganti kedua instans <CONNECTION_STRING> dengan string koneksi untuk database MongoDB Anda.

Jika Anda menggunakan database Azure Cosmos DB untuk MongoDB:
  • Ganti kedua instans <CONNECTION_STRING> dengan String koneksi Azure Cosmos DB for MongoDB.
Atur pengaturan konfigurasi yang docker.dockerPath digunakan oleh templat. Untuk mengatur docker.dockerPath, buka Palet Perintah Visual Studio Code (Ctrl+Shift+P), masukkan "Preferensi: Buka Ruang Kerja Pengaturan", lalu masukkan "docker.dockerPath" di kotak Pengaturan pencarian. Masukkan "docker" (tanpa tanda kutip) untuk nilai pengaturan.

Catatan

Nama database dan nama koleksi diasumsikan sebagai restaurants_reviews.

A screenshot showing the settings.json file Visual Studio Code.
Jalankan gambar.
  • Di bagian IMAGES dari ekstensi Docker, temukan gambar bawaan.

  • Perluas gambar untuk menemukan tag terbaru , klik kanan dan pilih Jalankan Interaktif.

  • Anda akan diminta untuk memilih tugas yang sesuai untuk skenario Anda, baik "Konfigurasi eksekusi interaktif (lokal MongoDB)" atau "Konfigurasi eksekusi interaktif (MongoDB Azure)".

Dengan eksekusi interaktif, Anda akan melihat pernyataan cetak dalam kode, yang dapat berguna untuk penelusuran kesalahan. Anda juga dapat memilih Jalankan yang tidak interaktif dan tidak membuka input standar.

Penting

Langkah ini gagal jika profil terminal default diatur ke (Windows) Command Prompt. Untuk mengubah profil default, buka Palet Perintah Visual Studio Code (Ctrl+Shift+P), masukkan "Terminal: Pilih Profil Default", lalu pilih profil yang berbeda dari menu dropdown; misalnya Git Bash atau PowerShell.

A screenshot showing how to run a Docker container in Visual Studio Code.
Konfirmasikan bahwa kontainer sedang berjalan.
  • Di bagian KONTAINER ekstensi Docker, temukan kontainer.

  • Perluas node Kontainer Individu dan konfirmasikan bahwa "msdocspythoncontainerwebapp" sedang berjalan. Anda akan melihat simbol segitiga hijau di samping nama kontainer jika sedang berjalan.

A screenshot showing how to confirm a Docker container is running in Visual Studio Code.
Uji aplikasi web dengan mengklik kanan nama kontainer dan memilih Buka di Browser.

Browser akan terbuka ke browser default Anda sebagai "http://127.0.0.1:8000" untuk Django atau "http://127.0.0.1:5000/" untuk Flask.
A screenshot showing how to browse the endpoint of a Docker container in Visual Studio Code.
Hentikan kontainer.
  • Di bagian KONTAINER ekstensi Docker, temukan kontainer yang sedang berjalan.

  • Klik kanan kontainer dan pilih Hentikan.

A screenshot showing how to stop a running Docker container in Visual Studio Code.

Tip

Anda juga dapat menjalankan kontainer yang memilih konfigurasi eksekusi atau debug. Tugas ekstensi Docker di tasks.json dipanggil saat Anda menjalankan atau men-debug. Tugas yang disebut tergantung pada konfigurasi peluncuran apa yang Anda pilih. Untuk tugas "Docker: Python (MongoDB local)", tentukan <YOUR-IP-ADDRESS>. Untuk tugas "Docker: Python (MongoDB Azure)", tentukan <CONNECTION-STRING>.

Anda juga dapat memulai kontainer dari gambar dan menghentikannya dengan aplikasi Docker Desktop .

Langkah selanjutnya