‫Bagian ini akan fokus secara eksklusif pada Docker Compose, yang merupakan kombinasi
‫dari alat baris perintah dan file konfigurasi. Persyaratan untuk bagian ini adalah Anda benar-benar
‫perlu mengetahui banyak hal mendasar dari beberapa bagian terakhir di sekitar gambar dan wadah.
‫Ketika kita akan melalui kursus ini, Anda mungkin akan mulai mendengar saya
‫semakin bersemangat karena semuanya terus menjadi lebih baik.
‫Kanan?
‫Ketika Anda mempelajari satu komponen, Anda berpikir, man, bind mounts dan volume sangat keren. Itu akan menghemat waktu
‫saya. Saya bisa membayangkan bagaimana saya akan menggunakannya. Bla bla bla bla.
‫Lalu, saya akan datang dengan hal berikutnya yang akan menjadi lebih baik dari apa yang baru Anda pelajari
‫Dalam hal ini, itu tidak mungkin lebih benar.
‫Susun Docker. Jadi, apa itu? Dan mengapa kita peduli? Sangat sedikit layanan perangkat lunak yang benar-benar mandiri.
‫Ketika Anda memikirkan wadah Anda, itu adalah solusi proses tunggal, dan kami jarang akan menggunakan
‫hanya satu wadah untuk memecahkan masalah atau memberikan layanan kepada pelanggan kami.
‫Wadah kami akan sering membutuhkan wadah lain seperti SQL atau nilai kunci. Dan aplikasi lain yang perlu kita jalankan
‫dalam wadah, seperti proxy atau web frontend atau pekerja backend, dan sebagainya.
‫Bagaimana jika kita memiliki cara untuk menghubungkan semua bagian dari solusi kita bersama-sama,
‫di mana kita tidak perlu mengingat semua opsi menjalankan buruh pelabuhan kami, dan kemudian memasukkannya ke jaringan virtual
‫yang diam-diam dengan hubungan di antara mereka, dan hanya membuka publik port, dan kemudian putar semuanya dan robohkan dengan
‫satu perintah.
‫Nah, itu Docker Compose.
‫Sebelum kita menyelam, kita perlu membersihkan bahwa ada
‫dua bagian untuk Docker Compose. Bagian pertama adalah file YAML dan sangat mudah dimengerti.
‫Ini ditulis dalam YAML, dan jika Anda belum pernah berurusan dengan YAML, itu adalah bahasa konfigurasi yang sangat mudah.
‫Ini hampir semudah file INI.
‫Saya pikir sebenarnya lebih mudah karena menunjukkan hierarki.
‫Kami akan menyelami itu. File itu adalah tempat Anda menentukan semua wadah
‫yang perlu Anda jalankan, jaringan yang Anda butuhkan, volume apa pun yang Anda butuhkan, variabel lingkungan, gambar, dan segala macam opsi
‫konfigurasi lainnya.
‫Kemudian bagian kedua dari Docker Compose adalah alat CLI, yang merupakan docker -compose, yang
‫kami gunakan secara normal hanya untuk dev dan pengujian lokal, menggunakan file YAML yang kami buat untuk menyederhanakan perintah Docker kami.
‫Mari kita bicara tentang file Menulis Docker itu.
‫Sebenarnya ada versi untuk hal-hal yang dapat Anda masukkan ke dalam file penulisan. Jadi ketika Docker Compose dibuat bertahun-tahun yang lalu, itu sebenarnya
‫disebut "Gambar" dan baru saja diasumsikan versi 1. Sebenarnya tidak ada
‫daftar versi dalam file. Ketika sudah matang dan menambahkan fitur-fitur baru pada
‫apa yang dapat dimiliki file di dalamnya, seperti jaringan dan volume, mereka telah membuat pernyataan versi, yang
‫sebenarnya merupakan baris pertama dalam file. File ini sebenarnya dapat digunakan dengan Docker Compose CLI, yang akan kita bicarakan
‫sebentar lagi.
‫Ini, sekali lagi, terutama untuk manajemen pengembangan lokal dan hanya membuatnya lebih mudah untuk berkeliling di
‫lingkungan Anda dengan mesin lokal Anda.
‫Sekarang, dimulai dengan awal 2017, kami memiliki versi 1. 13 dan apa pun di luar itu, file-file ini sekarang dapat digunakan langsung
‫dengan baris perintah buruh pelabuhan dalam produksi dengan swarm. Tentu saja, ada bantuan besar di
‫baris perintah dengan --help.
‫Seperti yang kita lihat pada beberapa contoh, ketahuilah bahwa file Penulisan Docker adalah nama default, tetapi Anda sebenarnya dapat
‫menggunakan nama file apa pun yang Anda inginkan, asalkan itu adalah YAML yang tepat dan Anda menggunakan -f untuk menentukan file mana yang Anda
‫pilih sedang mencoba untuk digunakan.
‫Jika saya membuka editor saya dan melihat templat di sini, saya hanya ingin menunjukkan beberapa garis besar dari apa
‫yang seharusnya terlihat.
‫Kami memiliki nilai versi di awal.
‫Versi terbaru pada kuartal pertama 2017 adalah 3. 1.
‫Tapi saya selalu membuatnya setidaknya versi 2. Jika Anda tidak menambahkan baris di sana, itu selalu dianggap versi
‫1.
‫Tapi saya tidak menyarankan itu karena Anda kehilangan banyak fitur.
‫Jadi saya biasanya memulai dengan versi 2. Lalu jika saya membutuhkan fitur spesifik di luar versi 3 dan 3. 1, saya
‫akhirnya mengetik nomor versi di sana. Anda akan melihat tiga bagian utama lainnya
‫adalah layanan, volume dan jaringan, bukan?
‫Jadi ini hirarki.
‫Dalam layanan, semuanya bisa dua atau empat ruang, tetapi harus konsisten.
‫Jika Anda hanya mencari YAML di internet, Anda akan menemukan beberapa situs yang memandu Anda dengan spesifik
‫cara memformat file ini.
‫Jika Anda menggunakan editor modern, itu akan benar-benar berbicara bahasa YAML dan tahu bagaimana menangani
‫file-file ini dan formatnya.
‫Biasanya, di sini, Anda memiliki, minimal, layanan, yang sebenarnya hanya wadah.
‫Alasan mereka benar-benar menyebutnya layanan adalah karena setiap kontainer yang Anda buat di sini, Anda sebenarnya
‫bisa memiliki banyak wadah tersebut untuk redundansi. Jadi mereka perlu membuat kata yang
‫berbeda.
‫Saya pikir layanan itu hebat karena pada dasarnya itulah yang Anda lakukan. Kanan?
‫Setiap wadah, atau wadah, yang identik, yang Anda gunakan biasanya menyediakan layanan untuk
‫sesuatu.
‫Di bawah nama layanan, dan sekali lagi Anda dapat menyebutnya apa pun yang Anda inginkan.
‫Itu tidak harus menjadi nama gambar atau tidak harus terkait apa pun.
‫Mungkin itu Barney untuk nama layanan, tetapi itu akan menjadi nama DNS, yang akan kita ketahui nanti,
‫digunakan di dalam jaringan Docker Anda.
‫Mirip dengan ketika Anda memberikan perintah --name ke docker run.
‫Di sini, saya telah menunjukkan bahwa kita dapat secara opsional menentukan gambar. Kita dapat menentukan perintah
‫alternatif untuk dijalankan. Jika kita ingin menimpa perintah sebenarnya yang ditentukan dalam gambar ketika kita menjalankannya,
‫kita dapat melakukannya di sini.
‫Pada dasarnya, semua hal yang kita lakukan dari docker run command, kita dapat menyimpannya di sini. Karena itulah yang sebenarnya terjadi,
‫adalah menghilangkan semua pekerjaan mengingat semua hal yang berbeda dalam perintah run docker
‫untuk hal-hal yang Anda jalankan secara konstan.
‫Jika Anda memiliki lingkungan pengembangan Anda sendiri, atau alat Anda sendiri, Anda mungkin tidak
‫ingin mengetik perintah itu berulang-ulang. Dan skrip shell hanya bisa melakukan banyak hal.
‫Kanan?
‫Jadi, file ini sebenarnya akan menggantikan skrip shell yang akan mengotomatiskan perintah menjalankan buruh pelabuhan Anda.
‫Ini adalah cara yang jauh lebih baik untuk melakukannya.
‫Lebih mudah dibaca dan lebih baik didokumentasikan.
‫Anda akan melihat bahwa ruang di sini diizinkan.
‫Anda dapat memiliki ruang di komentar di mana pun Anda inginkan.
‫Jika Anda memiliki beberapa layanan, Anda hanya perlu memastikan itu adalah nama unik.
‫Lalu, bagian lain yang kami tentukan adalah volume dan jaringan. Dan lagi, ini juga opsional.
‫Ini pada dasarnya aturan yang sama seperti ketika Anda menjalankan dari baris perintah.
‫Jika Anda pernah perlu menggunakan volume docker buat atau jaringan buruh pelabuhan membuat perintah, dan sekali lagi, Anda
‫tidak harus selalu melakukannya.
‫Itu tergantung situasi Anda.
‫Anda bisa meletakkannya di sini juga.
‫Mari kita lihat dunia nyata, contoh sederhana.
‫Anda ingat di bagian terakhir, kami mengadakan kuliah di mana kami menggunakan Jekyll sangat cepat untuk hanya melakukan
‫contoh mount mengikat.
‫Jadi inilah tampilan file penulisan untuk perintah docker run, dan Anda akan melihat bahwa saya telah
‫menentukan gambar di sini.
‫Saya sudah menamainya Jekyll.
‫Saya sudah memberikan volume. Anda akan melihat alih-alih menggunakan pwd, Compose benar-benar memahami titik,
‫artinya ini adalah direktori kerja saya saat ini.
‫Cukup gunakan direktori ini tempat saya menjalankan file penulisan. Kemudian port atau opsi -p.
‫Anda akan melihat beberapa hal kecil tentang YAML, di mana ketika sesuatu hanya memiliki satu opsi,
‫seperti jika hanya akan ada satu gambar untuk setiap layanan, biasanya akan menjadi format kunci dan nilai seperti ini.
‫Jika itu akan menjadi daftar item, seperti volume dan port tempat Anda dapat memiliki banyak item, Anda akan
‫melihat bahwa file penulisan biasanya memiliki jamak. Alih-alih volume, itu volume. Dan bukannya port, itu port.
‫Dan kemudian akan ada format daftar dengan -.
‫Jika kita beralih ke contoh lain sangat cepat.
‫Anda akan melihat bahwa dalam yang
‫ini, ini sebenarnya contoh pengaturan WordPress di mana Anda memiliki layanan basis data di sini yang menjalankan
‫wadah basis data.
‫Dan kemudian wadah web server WordPress di bagian atas.
‫Anda akan melihat satu hal kecil yang berbeda tentang yang satu ini adalah bahwa kami menggunakan
‫variabel lingkungan, yang akan sama dengan -e pada baris perintah. Tetapi alih-alih format daftar di mana kita
‫memiliki -,
‫ini, sekali lagi, pernyataan kunci dan nilai lainnya.
‫Dalam format ini, kami tidak menggunakan -, kami hanya mencantumkan kunci dan nilainya.
‫Jika saya perlu menambahkan yang lain, saya hanya akan melakukannya di sini. Semua ini akan diteruskan ke
‫wadah, saat dijalankan, menggunakan baris perintah tulis.
‫Lalu yang terakhir, kita punya satu contoh lagi. Yang ini sedikit lebih rumit. Ini sebenarnya salah
‫satu yang sedang saya kerjakan baru-baru ini untuk membuat cluster server tiga-database di belakang server web Ghost.
‫Hantu sebenarnya adalah sistem blog yang mirip dengan WordPress. Anda akan melihat bahwa saya
‫memiliki beberapa variabel lingkungan untuk masing-masing wadah ini.
‫Jadi saya punya wadah Ghost saya di bagian atas. Kemudian saya sebenarnya memiliki hal ini dikenal
‫sebagai SQL Proxy, yang berada di depan server MySQL dan bertindak sebagai penyeimbang beban dan solusi failover.
‫Kemudian saya memiliki masing-masing dari dua server MySQL saya. Anda akan melihat opsi lain di sini yang mengatakan, 'tergantung
‫pada,' dan tergantung pada adalah yang cukup umum.
‫Ini pada dasarnya membantu Compose memahami hubungan antara layanan ini. Ia tahu bahwa jika saya harus
‫memulai hantu saya, maka saya juga perlu memulai yang lain juga.
‫Anda dapat melihat di sini bahwa hantu saya benar-benar tergantung pada ini. Kami akan masuk ke rincian bagaimana
‫ini bekerja di kuliah nanti.
‫Tetapi untuk saat ini, ini mungkin banyak untuk dicerna, dan semua perintah dan lainnya ini berbeda, tetapi percayalah bahwa
‫Docker memiliki beberapa dokumentasi yang sangat bagus di situs web mereka. Jika Anda hanya mencari file Menulis Docker di
‫Google, Anda mungkin akan menemukan ini dengan beberapa hit pertama.
‫Itu akan berada di bawah dokumen. buruh pelabuhan. situs web com, seperti biasa,
‫dan ini akan menjadi dokumentasi tentang setiap kunci kecil dan opsi nilai yang Anda miliki.
‫Anda akan melihat tergantung pada saya sebutkan. Anda akan melihat lingkungan di sini yang menunjukkan cara berbeda
‫untuk memasukkan variabel lingkungan. Apa yang hebat tentang dokumentasi ini adalah memberi
‫Anda banyak contoh.
‫Secara pribadi, saya di situs ini setiap hari, sama seperti saya berada di halaman opsi perintah docker run atau halaman
‫opsi perintah penulisan.
‫Saya terus-menerus merujuk ini karena hanya ada begitu banyak fitur saat ini sehingga saya tidak dapat
‫mengingat semuanya.
‫Jadi saya menyimpannya di bookmark saya.
‫Sekarang kita memiliki gambaran umum tentang bagaimana format file penulisan, mari kita beralih ke
‫baris perintah dan belajar tentang alat Docker Compose CLI.