Latihan - Membuat file Docker Compose untuk orkestrasi
Perusahaan peralatan luar ruangan Contoso memiliki dua layanan yang ingin mereka kelompokkan bersama untuk membangun dan menyebarkan sebagai satu unit. Perusahaan memutuskan untuk menggunakan Docker Compose untuk membangun layanan bersama-sama.
Dalam latihan ini, Anda membuat file YAML Docker Compose. Kemudian Anda menggunakan utilitas Docker Compose untuk membangun gambar kontainer Docker dan menjalankannya.
Menyambungkan ke codespace
Jika Anda terputus dari codespace yang Anda gunakan di latihan sebelumnya, sambungkan kembali sekarang:
- Buka browser dan buka repositori eShopLite.
- Pilih Kode, lalu pilih tab Codespace.
- Pilih codespace yang Anda buat di latihan sebelumnya. GitHub membuka codespace.
- Buka direktori /dotnet-docker.
Membuat file Docker Compose
Gunakan file docker-compose untuk mengonfigurasi gambar untuk layanan back-end dan front-end:
Di folder dotnet-docker dari codespace, buka file bernama ./dotnet-docker/docker-compose.yml. File ini kosong.
Tambahkan kode berikut ke file docker-compose.yml:
version: '3.4' services: frontend: image: store:latest environment: - ProductEndpoint=http://backend:8080 ports: - "32000:8080" depends_on: - backend backend: image: products:latest ports: - "32001:8080"Kode ini melakukan beberapa hal:
- Ini membuat situs web front-end dan menamainya frontend.
- Kode menetapkan variabel lingkungan untuk situs web:
ProductEndpoint=http://backend:8080. Kode ini adalah bagaimana layanan front-end menemukan layanan back-end Produk. - Kode membuka port dan menyatakan bahwa itu tergantung pada layanan back-end.
- Layanan back-end bernama backend dibuat berikutnya.
- Perintah terakhir menentukan port mana yang akan dibuka.
Sebagai perbandingan, file docker-compose.yml yang perlu Anda gunakan jika Anda memiliki dockerfiles:
version: '3.4' services: frontend: image: storeimage build: context: . dockerfile: ./Store/Dockerfile environment: - ProductEndpoint=http://backend:8080 ports: - "32000:8080" depends_on: - backend backend: image: productservice build: context: . dockerfile: ./Products/Dockerfile ports: - "32001:8080"Kodenya hampir identik. Satu-satunya perbedaan adalah kebutuhan untuk memiliki fase build yang menunjuk ke setiap dockerfile.
Buat gambar dan jalankan kontainer
Sekarang, gunakan Docker Compose untuk membangun dan memulai komponen front-end dan back-end.
Untuk membuat gambar kontainer dengan dukungan kontainer .NET, pilih tab Terminal , lalu jalankan perintah berikut. Catatan, jika aplikasi Anda masih berjalan, pertama-tama tutup dengan CTRL+C.
dotnet publish /p:PublishProfile=DefaultContainerUntuk memulai situs web front-end dan API web back-end, jalankan perintah ini:
docker compose upBeberapa output muncul, lalu situs web dan API web sedang berjalan. Anda akan melihat output yang mirip dengan contoh ini:
[+] Running 2/0 ✔ Container finished-files-backend-1 Created 0.0s ✔ Container finished-files-frontend-1 Created 0.0s Attaching to backend-1, frontend-1 ... backend-1 | info: Microsoft.Hosting.Lifetime[0] backend-1 | Hosting environment: Production backend-1 | info: Microsoft.Hosting.Lifetime[0] backend-1 | Content root path: /appUntuk menguji layanan front-end, pilih tab Port . Kemudian, di sebelah kanan alamat lokal untuk port Front End , pilih ikon bola dunia. Browser menampilkan halaman beranda.
Pilih Produk. Katalog menunjukkan barang dagangan Contoso.