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.
BERLAKU UNTUK:
MongoDB vCore
Dalam tutorial ini, Anda membangun aplikasi web Node.js yang terhubung ke Azure Cosmos DB untuk MongoDB dalam arsitektur vCore. Tumpukan MongoDB, Express, React.js, Node.js (MERN) adalah kumpulan teknologi populer yang digunakan untuk membangun banyak aplikasi web modern. Dengan Azure Cosmos DB for MongoDB (vCore), Anda dapat membangun aplikasi web baru atau memigrasikan aplikasi yang ada menggunakan driver MongoDB yang sudah Anda kenal. Di tutorial ini, Anda akan:
- Menyiapkan lingkungan Anda
- Menguji aplikasi MERN dengan kontainer MongoDB lokal
- Menguji aplikasi MERN dengan kluster vCore
- Menyebarkan aplikasi MERN ke Azure App Service
Prasyarat
Untuk menyelesaikan tutorial ini, Anda memerlukan sumber daya berikut:
- Kluster vCore yang ada.
- Akun GitHub.
- GitHub dilengkapi dengan jam Codespace gratis untuk semua pengguna.
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 2 instans inti.
Mulai proses untuk membuat GitHub Codespace baru di
main
cabangazure-samples/msdocs-azure-cosmos-db-mongodb-mern-web-app
repositori GitHub.Pada halaman Buat codespace , tinjau pengaturan konfigurasi codespace, lalu pilih Buat codespace baru
Tunggu hingga codespace dimulai. 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 --version
Catatan
Tutorial ini memerlukan versi berikut dari setiap alat yang telah diinstal sebelumnya di lingkungan Anda:
Alat Versi Docker ≥ 20.10.0 Node.js ≥ 18.0150 NPM ≥ 9.5.0 Azure CLI ≥ 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.0
Di 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.
Pelaksanaan ruang uji coba 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 }, ... ]
Catatan
Id objek (
_id
) dihasilkan secara acak dan akan 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_STRING
String koneksi ke kluster Azure Cosmos DB untuk MongoDB (vCore). Untuk saat ini, gunakan mongodb://localhost:27017?directConnection=true
.CONNECTION_STRING=mongodb://localhost:27017?directConnection=true
Ubah konteks terminal ke server/ folder.
cd server
Instal dependensi dari Node Package Manager (npm).
npm install
Mulai aplikasi Node.js & Express.
npm start
API 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 Cosmos DB for MongoDB (vCore)
Sekarang, mari kita validasi bahwa aplikasi bekerja dengan mulus dengan Azure Cosmos DB untuk MongoDB (vCore). 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).
Navigasi ke halaman kluster Azure Cosmos DB for MongoDB (vCore) yang ada.
Dari halaman kluster Azure Cosmos DB for MongoDB (vCore), pilih opsi menu navigasi String koneksi.
Rekam nilai dari bidang string koneksi.
Penting
string koneksi di portal tidak menyertakan nilai nama pengguna dan kata sandi. Anda harus mengganti placeholder
<user>
dan<password>
dengan kredensial yang Anda gunakan saat Anda awalnya membuat kluster.Kembali ke dalam lingkungan pengembangan terintegrasi (IDE), buka terminal baru.
Mulai MongoDB Shell menggunakan
mongosh
perintah dan string koneksi yang Anda rekam sebelumnya. Pastikan Anda mengganti<user>
tempat penampung dan<password>
dengan kredensial yang Anda gunakan saat awalnya membuat kluster.mongosh "<mongodb-cluster-connection-string>"
Catatan
Anda mungkin perlu mengodekan nilai tertentu untuk string koneksi. Dalam contoh ini, nama kluster adalah
msdocs-cosmos-tutorial
, nama penggunanya adalahclusteradmin
, dan kata sandinya adalahP@ssw.rd
. Dalam kata sandi@
, karakter harus dikodekan menggunakan%40
. Contoh string koneksi disediakan di sini dengan pengodean kata sandi yang benar.CONNECTION_STRING=mongodb+srv://clusteradmin:P%40ssw.rd@msdocs-cosmos-tutorial.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000
Dalam shell, jalankan perintah berikut untuk membuat database Anda, membuat koleksi Anda, dan seed dengan data pemula.
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 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 }, ... ]
Catatan
Id objek (
_id
) dihasilkan secara acak dan akan berbeda dari output contoh terpotong ini.Keluar dari shell MongoDB.
exit
Di direktori klien/, buat file .env baru.
Dalam file client/.env, tambahkan variabel lingkungan untuk nilai ini:
Variabel lingkungan Nilai CONNECTION_STRING
string sambungan ke Kluster Azure Cosmos DB for MongoDB (vCore). Gunakan string koneksi yang sama yang Anda gunakan dengan mongo shell. 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 start
API secara otomatis membuka jendela browser untuk memverifikasi bahwa itu mengembalikan array dokumen produk.
Tutup tab/jendela browser tambahan. Kemudian, tutup terminal.
Menyebarkan aplikasi MERN ke Azure App Service
Sebarkan layanan dan klien ke Azure App Service untuk membuktikan bahwa aplikasi berfungsi secara end-to-end. 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 perintah
az login --use-device-code
.Ubah direktori kerja saat ini ke jalur server/.
cd server
Buat 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_STRING
denganaz 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 show
dan simpan dalam nama variabel shell d serverUri.serverUri=$(az webapp show \ --resource-group $resourceGroupName \ --name $serverAppName \ --query hostNames[0] \ --output tsv)
open-cli
Gunakan paket dan perintah dari NuGet dengannpx
untuk membuka jendela browser menggunakan URI untuk aplikasi web server. Validasi bahwa aplikasi server mengembalikan data array JSON Anda dari kluster MongoDB (vCore).npx open-cli "https://$serverUri/products" --yes
Petunjuk
Terkadang penyebaran dapat diselesaikan 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 ../client
Buat 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_ENDPOINT
denganaz 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 show
dan simpan dalam nama variabel shell d clientUri.clientUri=$(az webapp show \ --resource-group $resourceGroupName \ --name $clientAppName \ --query hostNames[0] \ --output tsv)
open-cli
Gunakan paket dan perintah dari NuGet dengannpx
untuk membuka jendela browser menggunakan URI untuk aplikasi web klien. Validasi bahwa aplikasi klien merender data dari API aplikasi server.npx open-cli "https://$clientUri" --yes
Petunjuk
Terkadang proses pengerjaan 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 Anda sendiri, di akhir proyek, sebaiknya hapus sumber daya yang tidak lagi Anda butuhkan. Sumber daya yang dibiarkan berjalan dapat menghabiskan uang Anda. Anda dapat menghapus sumber daya satu per satu atau menghapus grup sumber daya untuk menghapus seluruh rangkaian sumber daya.
Untuk menghapus seluruh grup sumber daya, gunakan
az group delete
.az group delete \ --name $resourceGroupName \ --yes
Validasi 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 kuota jam inti gratis yang Anda dapatkan untuk akun Anda.
Masuk ke dasbor GitHub Codespaces (https://github.com/codespaces).
Temukan codespaces yang saat ini sedang berjalan dan bersumber dari repositori GitHub
azure-samples/msdocs-azure-cosmos-db-mongodb-mern-web-app
.Buka menu konteks untuk codespace, lalu pilih Hapus.
Langkah selanjutnya
Sekarang setelah Anda membangun aplikasi pertama Anda untuk kluster MongoDB (vCore), pelajari cara memigrasikan data Anda ke Azure Cosmos DB.