Latihan - Membuat file Docker Compose untuk orkestrasi

Selesai

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:

  1. Buka browser dan buka repositori eShopLite.
  2. Pilih Kode, lalu pilih tab Codespace.
  3. Pilih codespace yang Anda buat di latihan sebelumnya. GitHub membuka codespace.
  4. Buka direktori /dotnet-docker.

Membuat file Docker Compose

Gunakan file docker-compose untuk mengonfigurasi gambar untuk layanan back-end dan front-end:

  1. Di folder dotnet-docker dari codespace, buka file bernama ./dotnet-docker/docker-compose.yml. File ini kosong.

  2. 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.
  3. 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.

  1. 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=DefaultContainer
    
  2. Untuk memulai situs web front-end dan API web back-end, jalankan perintah ini:

    docker compose up
    
  3. Beberapa 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: /app
    

    Cuplikan layar tab port codespace.

  4. Untuk 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.

  5. Pilih Produk. Katalog menunjukkan barang dagangan Contoso.

    Cuplikan layar produk webshop eSHopLite.