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.
Dalam tutorial ini, Anda membuat aplikasi web Node.js yang tersambung ke Azure DocumentDB. Tumpukan MongoDB, Express, React.js, Node.js (MERN) adalah kumpulan teknologi populer yang digunakan untuk membangun banyak aplikasi web modern. Dengan Azure DocumentDB, Anda dapat membuat aplikasi web baru atau memigrasikan aplikasi yang sudah ada menggunakan driver MongoDB yang sudah Anda kenal. Di tutorial ini, Anda akan:
- Atur lingkungan Anda
- Menguji aplikasi MERN dengan kontainer MongoDB lokal
- Menguji aplikasi MERN dengan kluster
- Menyebarkan aplikasi MERN ke Azure App Service
Prasyarat
Untuk menyelesaikan tutorial ini, Anda memerlukan sumber daya berikut:
Langganan Azure
- Jika Anda tidak memiliki langganan Azure, buat akun gratis
Kluster Azure DocumentDB yang sudah ada
- Jika Anda tidak memiliki kluster, buat kluster baru
- Akun GitHub dengan hak GitHub Codespaces
Mengonfigurasi lingkungan pengembangan
Lingkungan kontainer pengembangan tersedia dengan semua dependensi yang diperlukan untuk menyelesaikan setiap latihan dalam proyek ini. Anda dapat menjalankan kontainer pengembangan di GitHub Codespaces atau secara lokal menggunakan Visual Studio Code.
GitHub Codespaces menjalankan kontainer pengembangan yang dikelola oleh GitHub dengan Visual Studio Code untuk Web sebagai antarmuka pengguna. Untuk lingkungan pengembangan yang paling mudah, gunakan GitHub Codespaces sehingga Anda memiliki alat dan dependensi pengembang yang benar yang telah diinstal sebelumnya untuk menyelesaikan modul pelatihan ini.
Penting
Semua akun GitHub dapat menggunakan Codespace hingga 60 jam gratis setiap bulan dengan dua instans inti.
Mulai proses untuk membuat GitHub Codespace baru pada cabang
maindari repositori GitHubazure-samples/msdocs-azure-cosmos-db-mongodb-mern-web-app.Pada halaman Buat codespace , tinjau pengaturan konfigurasi codespace, lalu pilih Buat codespace baru
Cuplikan layar dari layar konfirmasi sebelum membuat codespace baru.
Tunggu hingga codespace menyala. Proses startup ini dapat memakan waktu beberapa menit.
Buka terminal baru di codespace.
Periksa versi alat yang Anda gunakan dalam tutorial ini.
docker --version node --version npm --version az --versionNota
Tutorial ini memerlukan versi berikut dari setiap alat, yang telah diinstal sebelumnya di lingkungan Anda:
Tool Versi Docker ≥ 20.10.0 Node.js ≥ 18.0150 npm ≥ 9.5.0 Azure CLI (antarmuka baris perintah Azure) ≥ 2.46.0 Tutup terminal.
Langkah-langkah yang tersisa dalam tutorial ini berlangsung dalam konteks kontainer pengembangan ini.
Menguji API aplikasi MERN dengan kontainer MongoDB
Mulailah dengan menjalankan API aplikasi sampel dengan kontainer MongoDB lokal untuk memvalidasi bahwa aplikasi berfungsi.
Jalankan kontainer MongoDB menggunakan Docker dan terbitkan port MongoDB umum (
27017).docker pull mongo:6.0 docker run --detach --publish 27017:27017 mongo:6.0Di bilah samping, pilih ekstensi MongoDB.
Tambahkan koneksi baru ke ekstensi MongoDB menggunakan string koneksi
mongodb://localhost.
Setelah koneksi berhasil, buka file playground data/products.mongodb .
Pilih ikon Jalankan semua untuk menjalankan skrip.
Pengoperasian pengujian harus menghasilkan daftar dokumen dalam koleksi MongoDB lokal. Berikut adalah contoh output yang dipotong.
[ { "_id": { "$oid": "640a146e89286b79b6628eef" }, "name": "Confira Watch", "category": "watches", "price": 105 }, { "_id": { "$oid": "640a146e89286b79b6628ef0" }, "name": "Diannis Watch", "category": "watches", "price": 98, "sale": true }, ... ]Nota
Pengidentifikasi objek (
_id) dihasilkan secara acak dan berbeda dari output contoh terpotong ini.Di server/ direktori, buat file .env baru.
Dalam file server/.env , tambahkan variabel lingkungan untuk nilai ini:
Variabel lingkungan Nilai CONNECTION_STRINGString koneksi ke kluster Azure DocumentDB. Untuk saat ini, gunakan mongodb://localhost:27017?directConnection=true.CONNECTION_STRING=mongodb://localhost:27017?directConnection=trueUbah konteks terminal ke server/ folder.
cd serverPasang dependensi dari Node Package Manager (npm).
npm installMulai aplikasi Node.js & Express.
npm startAPI secara otomatis membuka jendela browser untuk memverifikasi bahwa API mengembalikan array dokumen produk.
Tutup tab/jendela browser tambahan.
Tutup terminal.
Menguji aplikasi MERN dengan kluster Azure DocumentDB
Sekarang, mari kita validasi bahwa aplikasi bekerja dengan mulus dengan Azure DocumentDB. Untuk tugas ini, isi kluster yang sudah ada sebelumnya dengan data benih menggunakan shell MongoDB lalu perbarui string koneksi API.
Masuk ke portal Azure (https://portal.azure.com).
Navigasikan ke halaman kluster Azure DocumentDB yang sudah ada.
Dari halaman kluster Azure DocumentDB, pilih opsi menu navigasi String koneksi .
Catat nilai dari bidang String koneksi.
Penting
String koneksi di portal tidak menyertakan nilai nama pengguna dan kata sandi. Anda harus mengganti
<user>placeholder dan<password>placeholder dengan kredensial yang Anda gunakan saat Anda awalnya membuat kluster.Buka terminal baru dalam lingkungan pengembangan terintegrasi (IDE) Anda.
Mulai MongoDB Shell menggunakan
mongoshperintah dan string koneksi yang Anda rekam sebelumnya. Pastikan Anda mengganti placeholder<user>dan<password>dengan kredensial yang Anda gunakan saat awal membuat kluster.mongosh "<mongodb-cluster-connection-string>"Nota
Anda perlu mengodekan nilai tertentu untuk string koneksi. Dalam contoh ini, nama kluster adalah
msdocs-azure-documentdb-tutorial, nama penggunanya adalahclusteradmin, dan kata sandinya adalahP@ssw.rd. Dalam kata sandi,@karakter perlu dikodekan menggunakan%40. Contoh string koneksi disediakan di sini dengan pengodean kata sandi yang benar.CONNECTION_STRING=mongodb+srv://clusteradmin:P%40ssw.rd@msdocs-azure-documentdb-tutorial.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000Di dalam shell, jalankan perintah berikut untuk membuat database Anda, membuat koleksi data Anda, dan menyisipkan data awal.
use('cosmicworks'); db.products.drop(); db.products.insertMany([ { name: "Confira Watch", category: "watches", price: 105.00 }, { name: "Diannis Watch", category: "watches", price: 98.00, sale: true }, { name: "Sterse Gloves", category: "gloves", price: 42.00 }, { name: "Peache Sunglasses", category: "eyewear", price: 32.00, sale: false, sizes: [ "S", "M", "L" ] }, { name: "Icento Pack", category: "bags", price: 58.00 }, { name: "Iroowl Bracelet", category: "watches", price: 66.00 }, { name: "Glaark Bag", category: "bags", price: 56.00, sale: true }, { name: "Windry Mittens", category: "gloves", price: 35.00 }, { name: "Tuvila Hat", category: "hats", price: 120.00 }, { name: "Klinto Hat", category: "hats", subcategory: "hats-beanies", price: 65.00 } ]); db.products.find({});Perintah harus menghasilkan daftar dokumen dalam koleksi MongoDB lokal. Berikut adalah contoh hasil yang telah dipangkas.
[ { "_id": { "$oid": "640a146e89286b79b6628eef" }, "name": "Confira Watch", "category": "watches", "price": 105 }, { "_id": { "$oid": "640a146e89286b79b6628ef0" }, "name": "Diannis Watch", "category": "watches", "price": 98, "sale": true }, ... ]Nota
Pengidentifikasi objek (
_id) dihasilkan secara acak dan berbeda dari output contoh terpotong ini.Keluar dari shell MongoDB.
exitDi direktori klien/ , buat file .env baru.
Dalam file client/.env , tambahkan variabel lingkungan untuk nilai ini:
Variabel lingkungan Nilai CONNECTION_STRINGString koneksi ke kluster Azure DocumentDB. Gunakan string koneksi yang sama dengan yang Anda gunakan dengan shell mongo. CONNECTION_STRING=<your-connection-string>Validasi bahwa aplikasi menggunakan layanan database dengan mengubah konteks terminal ke server/ folder, menginstal dependensi dari Node Package Manager (npm), lalu memulai aplikasi.
cd server npm install npm startAPI secara otomatis membuka jendela browser untuk memverifikasi bahwa itu mengembalikan sebuah array dokumen produk.
Tutup tab/jendela browser tambahan. Kemudian, tutup terminal.
Menyebarkan aplikasi MERN ke Azure App Service
Buktikan bahwa aplikasi berfungsi secara end-to-end dengan menyebarkan layanan dan klien ke Azure App Service. Gunakan rahasia di aplikasi web untuk menyimpan variabel lingkungan dengan kredensial dan titik akhir API.
Dalam lingkungan pengembangan terintegrasi (IDE) Anda, buka terminal baru.
Buat variabel shell untuk nama grup sumber daya yang sudah ada sebelumnya bernama resourceGroupName.
# Variable for resource group name resourceGroupName="<existing-resource-group>"Buat variabel shell untuk dua aplikasi web bernama serverAppName dan clientAppName.
# Variable for randomnly generated suffix let suffix=$RANDOM*$RANDOM # Variable for web app names with a randomnly generated suffix serverAppName="server-app-$suffix" clientAppName="client-app-$suffix"Jika Anda belum melakukannya, masuk ke Azure CLI menggunakan
az login --use-device-codeperintah .Ubah direktori kerja saat ini ke jalur server/.
cd serverBuat aplikasi web baru untuk komponen server aplikasi MERN dengan
az webapp up.az webapp up \ --resource-group $resourceGroupName \ --name $serverAppName \ --sku F1 \ --runtime "NODE|18-lts"Buat pengaturan string koneksi baru untuk aplikasi web server bernama
CONNECTION_STRINGdenganaz webapp config connection-string set. Gunakan nilai yang sama untuk string koneksi yang Anda gunakan dengan shell MongoDB dan file .env sebelumnya dalam tutorial ini.az webapp config connection-string set \ --resource-group $resourceGroupName \ --name $serverAppName \ --connection-string-type custom \ --settings "CONNECTION_STRING=<mongodb-connection-string>"Dapatkan URI untuk aplikasi web server dengan
az webapp showdan simpan dalam nama variabel shell d serverUri.serverUri=$(az webapp show \ --resource-group $resourceGroupName \ --name $serverAppName \ --query hostNames[0] \ --output tsv)open-cliGunakan paket dan perintah dari NuGet dengannpxuntuk membuka jendela browser menggunakan URI untuk aplikasi web server. Validasi bahwa aplikasi server mengembalikan data array JSON Anda dari kluster.npx open-cli "https://$serverUri/products" --yesPetunjuk / Saran
Terkadang penyebaran bisa selesai secara asinkron. Jika Anda tidak melihat apa yang Anda harapkan, tunggu sebentar lagi dan refresh jendela browser Anda.
Ubah direktori kerja ke klien/ jalur.
cd ../clientBuat aplikasi web baru untuk komponen klien aplikasi MERN dengan
az webapp up.az webapp up \ --resource-group $resourceGroupName \ --name $clientAppName \ --sku F1 \ --runtime "NODE|18-lts"Buat pengaturan aplikasi baru untuk aplikasi web klien bernama
REACT_APP_API_ENDPOINTdenganaz webapp config appsettings set. Gunakan titik akhir API server yang disimpan dalam variabel shell serverUri .az webapp config appsettings set \ --resource-group $resourceGroupName \ --name $clientAppName \ --settings "REACT_APP_API_ENDPOINT=https://$serverUri"Dapatkan URI untuk aplikasi web klien dengan
az webapp showdan simpan dalam nama variabel shell d clientUri.clientUri=$(az webapp show \ --resource-group $resourceGroupName \ --name $clientAppName \ --query hostNames[0] \ --output tsv)open-cliGunakan paket dan perintah dari NuGet dengannpxuntuk membuka jendela browser menggunakan URI untuk aplikasi web klien. Validasi bahwa aplikasi klien merender data dari API aplikasi server.npx open-cli "https://$clientUri" --yesPetunjuk / Saran
Terkadang pengembangan bisa selesai secara asinkron. Jika Anda tidak melihat apa yang Anda harapkan, tunggu sebentar lagi dan refresh jendela browser Anda.
Tutup terminal.
Membersihkan sumber daya
Saat Anda bekerja di langganan milik Anda sendiri, di akhir proyek, sebaiknya hapus sumber daya yang tidak lagi Anda butuhkan. Sumber daya yang dibiarkan tetap aktif dapat merugikan Anda secara finansial. Anda dapat menghapus sumber daya satu per satu atau menghapus grup sumber daya untuk menghapus seluruh kumpulan sumber daya.
Untuk menghapus seluruh grup sumber daya, gunakan
az group delete.az group delete \ --name $resourceGroupName \ --yesValidasi bahwa grup sumber daya dihapus menggunakan
az group list.az group list
Membersihkan lingkungan pengembangan
Anda mungkin juga ingin membersihkan lingkungan pengembangan Anda atau mengembalikannya ke keadaan khasnya.
Menghapus lingkungan GitHub Codespaces memastikan bahwa Anda dapat memaksimalkan jumlah pemberian izin per jam inti gratis yang Anda dapatkan untuk akun Anda.
Masuk ke dasbor GitHub Codespaces (https://github.com/codespaces).
Temukan kontainer pengembangan yang sedang berjalan yang bersumber dari
azure-samples/msdocs-azure-cosmos-db-mongodb-mern-web-apprepositori GitHub.
Buka menu konteks untuk codespace, lalu pilih Hapus.
Cuplikan layar menu konteks untuk satu codespace dengan opsi hapus yang disorot.
Cuplikan layar opsi menu untuk membuka terminal baru.