Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Di bagian seri tutorial ini, Anda mempelajari cara membuat dan menjalankan Django kontainer atau aplikasi web Flask Python di komputer lokal Anda. Untuk menyimpan data untuk aplikasi ini, Anda dapat menggunakan instans MongoDB lokal atau Azure Cosmos DB untuk MongoDB. Artikel ini adalah bagian 2 dari seri tutorial 5 bagian. Kami menyarankan agar Anda menyelesaikan bagian 1 sebelum memulai artikel ini.
Diagram layanan berikut menyoroti komponen lokal yang tercakup dalam artikel ini Dalam artikel ini, Anda juga mempelajari cara menggunakan Azure Cosmos DB untuk MongdoDB dengan gambar Docker lokal, bukan instans lokal MongoDB.
Mengkloning atau mengunduh sampel aplikasi Python
Di bagian ini, Anda mengkloning atau mengunduh sampel aplikasi Python yang Anda gunakan untuk membangun gambar Docker. Anda dapat memilih antara aplikasi web Django atau Flask Python. Jika Anda memiliki aplikasi web Python Sendiri, Anda dapat memilih untuk menggunakannya sebagai gantinya. Jika Anda menggunakan aplikasi web Python Anda sendiri, pastikan aplikasi Anda memiliki Dockerfile di folder akar dan dapat terhubung ke database MongoDB.
Kloning repositori Django atau Flask ke dalam folder lokal dengan menggunakan salah satu perintah berikut:
Navigasi ke folder akar untuk repositori kloning Anda.
Membangun gambar Docker
Di bagian ini, Anda membuat gambar Docker untuk aplikasi web Python menggunakan Visual Studio Code atau Azure CLI. Gambar Docker berisi aplikasi web Python, dependensinya, dan runtime Python. Gambar Docker dibangun dari Dockerfile yang menentukan konten dan perilaku gambar. Dockerfile berada di folder akar aplikasi sampel yang Anda kloning atau unduh (atau disediakan sendiri).
Petunjuk / Saran
Jika Anda baru menggunakan Azure CLI, lihat Mulai menggunakan Azure CLI untuk mempelajari cara mengunduh dan menginstal Azure CLI secara lokal atau cara menjalankan perintah Azure CLI di Azure Cloud Shell.
Docker diperlukan untuk membangun gambar Docker menggunakan Docker CLI. Setelah Docker diinstal, buka jendela terminal dan navigasikan ke folder sampel.
Nota
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.
Konfirmasikan bahwa Docker dapat diakses dengan menjalankan perintah berikut di folder akar aplikasi sampel.
docker
Jika, setelah menjalankan perintah ini, Anda akan melihat bantuan untuk Docker CLI, Docker dapat diakses. Jika tidak, pastikan Docker diinstal dan shell Anda memiliki akses ke Docker CLI.
Buat gambar Docker untuk aplikasi web Python dengan menggunakan perintah build Docker .
Bentuk umum perintah adalah
docker build --rm --pull --file "<path-to-project-root>/Dockerfile" --label "com.microsoft.created-by=docker-cli" --tag "<container-name>:latest" "<path-to-project-root>"
.Jika Anda berada di folder akar proyek, gunakan perintah berikut untuk membangun gambar Docker. Titik (".") di akhir perintah mengacu pada direktori saat ini tempat perintah berjalan. Untuk memaksa pembangunan ulang, tambahkan
--no-cache
.#!/bin/bash docker build --rm --pull \ --file "Dockerfile" \ --label "com.microsoft.create-by=docker-cli" \ --tag "msdocspythoncontainerwebapp:latest" \ .
Konfirmasikan bahwa gambar berhasil dibuat dengan menggunakan perintah gambar Docker .
docker images
Perintah mengembalikan daftar gambar berdasarkan nama REPOSITORI, TAG, dan tanggal CREATE di antara karakteristik gambar lainnya.
Pada titik ini, Anda memiliki gambar Docker lokal bernama "msdocspythoncontainerwebapp" dengan tag "terbaru". Tag membantu menentukan detail versi, penggunaan yang dimaksudkan, stabilitas, dan informasi relevan lainnya. Untuk informasi selengkapnya, lihat Rekomendasi untuk memberi tag dan membuat versi citra kontainer.
Nota
Gambar yang dibangun dari Visual Studio Code atau dengan menggunakan Docker CLI secara langsung juga dapat dilihat dengan aplikasi Docker Desktop .
Menyiapkan MongoDB
Aplikasi web Python Anda memerlukan database MongoDB bernama restaurants_reviews dan koleksi bernama restaurants_reviews diperlukan untuk menyimpan data. Dalam tutorial ini, Anda menggunakan penginstalan lokal MongoDB dan instans Azure Cosmos DB for MongoDB untuk membuat dan mengakses database dan koleksi.
Penting
Jangan gunakan database MongoDB yang Anda gunakan dalam produksi. Dalam tutorial ini, Anda menyimpan string koneksi MongoDB ke salah satu instans MongoDB ini dalam variabel lingkungan (yang dapat diamati oleh siapa pun yang mampu memeriksa kontainer Anda - seperti dengan menggunakan docker inspect
).
MongoDB Lokal
Mari kita mulai dengan membuat instans lokal MongoDB menggunakan Azure CLI.
Instal MongoDB (jika belum diinstal).
Anda dapat memeriksa instalasi MongoDB dengan menggunakan MongoDB Shell (mongosh). Jika perintah berikut tidak berfungsi, Anda mungkin perlu menginstal mongosh secara eksplisit atau menyambungkan mongosh ke server MongoDB Anda.
Gunakan perintah berikut untuk membuka shell MongoDB dan mendapatkan versi shell MongoDB dan server MongoDB:
mongosh
Petunjuk / Saran
Untuk mengembalikan hanya versi server MongoDB yang diinstal pada sistem Anda, tutup dan buka kembali shell MongoDB dan gunakan perintah berikut:
mongosh --quiet --exec 'db.version()'
Dalam beberapa pengaturan, Anda juga dapat langsung memanggil daemon Mongo di shell bash Anda.
mongod --version
Edit file mongod.cfg di
\MongoDB\Server\8.0\bin
folder dan tambahkan alamat IP lokal komputer Anda ke kuncibindIP
.Kunci
bindip
dalam file konfigurasi MongoD menentukan nama host dan alamat IP yang didengarkan MongoDB untuk koneksi klien. Tambahkan IP komputer pengembangan lokal Anda saat ini. Contoh aplikasi web Python yang berjalan secara lokal dalam kontainer Docker 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>
Simpan perubahan Anda ke file konfigurasi ini.
Penting
Anda memerlukan hak administratif untuk menyimpan perubahan yang Anda buat pada file konfigurasi ini.
Mulai ulang MongoDB untuk mengambil perubahan pada file konfigurasi.
Buka shell MongoDB dan jalankan perintah berikut untuk mengatur nama database ke "restaurants_reviews" dan nama koleksi menjadi "restaurants_reviews". Anda juga dapat membuat database dan koleksi dengan ekstensi VS Code MongoDB atau alat sadar MongoDB lainnya.
> help > use restaurants_reviews > db.restaurants_reviews.insertOne({}) > show dbs > exit
Setelah Anda menyelesaikan langkah sebelumnya, string koneksi MongoDB lokal adalah "mongodb://127.0.0.1:27017/", nama database adalah "restaurants_reviews", dan nama koleksinya adalah "restaurants_reviews".
Azure Cosmos DB untuk MongoDB
Sekarang, mari kita buat juga instans Azure Cosmos DB untuk MongoDB menggunakan Azure CLI.
Nota
Di bagian 4 dari seri tutorial ini, Anda menggunakan instans Azure Cosmos DB for MongoDB untuk menjalankan aplikasi web di Azure App Service.
Sebelum menjalankan skrip berikut, ganti lokasi, grup sumber daya, dan Azure Cosmos DB untuk nama akun MongoDB dengan nilai yang sesuai (opsional). Sebaiknya gunakan grup sumber daya yang sama untuk semua sumber daya Azure yang dibuat dalam tutorial ini untuk membuatnya lebih mudah dihapus saat Anda selesai.
Skrip membutuhkan waktu beberapa menit untuk dijalankan.
#!/bin/bash
# LOCATION: The Azure region. Use the "az account list-locations -o table" command to find a region near you.
LOCATION='westus'
# RESOURCE_GROUP_NAME: The resource group name, which can contain underscores, hyphens, periods, parenthesis, letters, and numbers.
RESOURCE_GROUP_NAME='msdocs-web-app-rg'
# ACCOUNT_NAME: The Azure Cosmos DB for MongDB account name, which can contain lowercase letters, hyphens, and numbers.
ACCOUNT_NAME='msdocs-cosmos-db-account-name'
# Create a resource group
echo "Creating resource group $RESOURCE_GROUP_NAME in $LOCATION..."
az group create --name $RESOURCE_GROUP_NAME --location $LOCATION
# Create a Cosmos account for MongoDB API
echo "Creating $ACCOUNT_NAME. This command may take a while to complete."
az cosmosdb create --name $ACCOUNT_NAME --resource-group $RESOURCE_GROUP_NAME --kind MongoDB
# Create a MongoDB API database
echo "Creating database restaurants_reviews"
az cosmosdb mongodb database create --account-name $ACCOUNT_NAME --resource-group $RESOURCE_GROUP_NAME --name restaurants_reviews
# Create a MongoDB API collection
echo "Creating collection restaurants_reviews"
az cosmosdb mongodb collection create --account-name $ACCOUNT_NAME --resource-group $RESOURCE_GROUP_NAME --database-name restaurants_reviews --name restaurants_reviews
# Get the connection string for the MongoDB database
echo "Get the connection string for the MongoDB account"
az cosmosdb keys list --name $ACCOUNT_NAME --resource-group $RESOURCE_GROUP_NAME --type connection-strings
echo "Copy the Primary MongoDB Connection String from the list above"
Saat skrip selesai, salin String Koneksi MongoDB Utama dari output perintah terakhir ke clipboard Anda atau lokasi lainnya.
{
"connectionStrings": [
{
"connectionString": ""mongodb://msdocs-cosmos-db:pnaMGVtGIRAZHUjsg4GJBCZMBJ0trV4eg2IcZf1TqV...5oONz0WX14Ph0Ha5IeYACDbuVrBPA==@msdocs-cosmos-db.mongo.cosmos.azure.com:10255/?ssl=true&replicaSet=globaldb&retrywrites=false&maxIdleTimeMS=120000&appName=@msdocs-cosmos-db@"",
"description": "Primary MongoDB Connection String",
"keyKind": "Primary",
"type": "MongoDB"
},
...
]
}
Setelah menyelesaikan langkah sebelumnya, Anda memiliki string koneksi Azure Cosmos DB untuk MongoDB dari formulir mongodb://<server-name>:<password>@<server-name>.mongo.cosmos.azure.com:10255/?ssl=true&<other-parameters>
, database bernama restaurants_reviews
, dan koleksi bernama restaurants_reviews
.
Untuk informasi selengkapnya tentang cara menggunakan Azure CLI untuk membuat Cosmos DB untuk akun MongoDB dan untuk membuat database dan koleksi, lihat Membuat database dan koleksi untuk MongoDB untuk Azure Cosmos DB menggunakan Azure CLI. Anda juga dapat menggunakan PowerShell, ekstensi Azure Database Visual Studio Code, dan portal Microsoft Azure.
Petunjuk / Saran
Dalam ekstensi Azure Databases di Visual Studio Code, Anda dapat mengklik kanan server MongoDB dan mendapatkan string koneksi.
Menjalankan gambar secara lokal dalam kontainer
Anda sekarang siap untuk menjalankan kontainer Docker secara lokal menggunakan instans MongoDB lokal atau instans Cosmos DB for MongoDB Anda. Di bagian tutorial ini, Anda belajar menggunakan Visual Studio Code atau Azure CLI untuk menjalankan gambar secara lokal. Aplikasi sampel mengharapkan informasi koneksi MongoDB diteruskan ke dalamnya dengan 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.
Nota
Saat aplikasi web disebarkan ke Azure, aplikasi web mendapatkan informasi koneksi dari nilai lingkungan yang ditetapkan sebagai pengaturan konfigurasi App Service dan tidak ada modifikasi untuk skenario lingkungan pengembangan lokal yang berlaku.
MongoDB lokal
Gunakan perintah berikut dengan instans lokal MongoDB Anda untuk menjalankan gambar Docker secara lokal.
Jalankan versi terbaru gambar.
#!/bin/bash # Define variables # Set the port number based on the framework being used: # 8000 for Django, 5000 for Flask export PORT=<port-number> # Replace with actual port (e.g., 8000 or 5000) # Set your computer''s IP address (replace with actual IP) export YOUR_IP_ADDRESS=<your-computer-ip-address> # Replace with actual IP address # Run the Docker container with the required environment variables docker run --rm -it \ --publish "$PORT:$PORT" \ --publish 27017:27017 \ --add-host "mongoservice:$YOUR_IP_ADDRESS" \ --env CONNECTION_STRING=mongodb://mongoservice:27017 \ --env DB_NAME=restaurants_reviews \ --env COLLECTION_NAME=restaurants_reviews \ --env SECRET_KEY="supersecretkeythatispassedtopythonapp" \ msdocspythoncontainerwebapp:latest
Konfirmasikan bahwa kontainer sedang berjalan. Di jendela konsol lain, jalankan perintah docker container ls .
docker container ls
Lihat kontainer Anda "msdocspythoncontainerwebapp:latest:latest" dalam daftar. Perhatikan kolom
NAMES
dari output dan kolomPORTS
itu. Gunakan nama kontainer untuk menghentikan kontainer.Uji aplikasi web.
Buka "http://127.0.0.1:8000" untuk Django dan "http://127.0.0.1:5000/" untuk Flask.
Matikan kontainer.
docker container stop <container-name>
Azure Cosmos DB untuk MongoDB
Gunakan perintah berikut dengan instans Azure Cosmos DB for MongoDB Anda untuk menjalankan gambar Docker di Azure.
Jalankan versi terbaru gambar.
#!/bin/bash # PORT=8000 for Django and 5000 for Flask export PORT=<port-number> export CONNECTION_STRING="<connection-string>" docker run --rm -it \ --publish $PORT:$PORT/tcp \ --env CONNECTION_STRING=$CONNECTION_STRING \ --env DB_NAME=restaurants_reviews \ --env COLLECTION_NAME=restaurants_reviews \ --env SECRET_KEY=supersecretkeythatyougenerate \ msdocspythoncontainerwebapp:latest
Penyampaian informasi sensitif hanya untuk tujuan demonstrasi. Informasi string koneksi dapat dilihat dengan memeriksa kontainer menggunakan perintah docker container inspect. Cara lain untuk menangani rahasia adalah dengan menggunakan fungsionalitas BuildKit Docker.
Buka jendela konsol baru, jalankan perintah docker container ls berikut untuk mengonfirmasi bahwa kontainer sedang berjalan.
docker container ls
Lihat kontainer Anda "msdocspythoncontainerwebapp:latest:latest" dalam daftar. Perhatikan kolom
NAMES
dari output dan kolomPORTS
itu. Gunakan nama kontainer untuk menghentikan kontainer.Uji aplikasi web.
Buka "http://127.0.0.1:8000" untuk Django dan "http://127.0.0.1:5000/" untuk Flask.
Matikan kontainer.
docker container stop <container-name>
Anda juga dapat memulai kontainer dari gambar dan menghentikannya dengan aplikasi Docker Desktop .