‫Di bagian ini, kami telah membahas banyak tentang Swarm. Swarm, Stacks and Secrets adalah semacam trilogi fitur-fitur luar
‫biasa yang benar-benar dapat membuat banyak hal lebih mudah dalam produksi untuk kita.
‫Saya ingin menunjukkan kepada Anda seperti apa rasanya jika Anda benar-benar mengambil file Compose Anda, mengaturnya dalam
‫beberapa cara, dan inilah
‫yang pada dasarnya saya sebut menjalani mimpi.
‫Ternyata Anda benar-benar dapat menggunakan satu file untuk melakukan banyak hal, tetapi kadang-kadang kompleksitas Anda
‫tumbuh dan Anda akan membutuhkan beberapa file Menulis.
‫Saya hanya ingin menjalankan melalui cepat nyata.
‫Anda sebenarnya tidak harus melakukan ini sendiri jika tidak mau. Saya hanya akan menunjukkan kepada Anda
‫contoh bagaimana file Compose ini dapat bekerja bersama untuk membangun lingkungan Anda saat Anda pergi.
‫Dalam skenario ini, kita akan menggunakan komposisi buruh pelabuhan untuk lingkungan pengembangan lokal kita.
‫Kita akan menggunakan buruh pelabuhan membuat konfigurasi dan file untuk lingkungan CI kita untuk melakukan pengujian integrasi.
‫Kemudian ketika kita sedang dalam produksi, kita akan menggunakan file-file itu untuk menyebarkan docker
‫stack untuk benar-benar menyebarkan lingkungan produksi dengan stack. Jadi, saya menggunakan mesin lokal saya dan kami
‫akan menggunakan contoh sebelum skenario Drupal, dengan server database, dan antarmuka web.
‫Kami memiliki Dockerfile yang telah kami gunakan dalam tugas sebelumnya. Kami sedang membangun kembali konfigurasi drupal
‫khusus, namun sederhana, dengan templat.
‫Kemudian kita akan memiliki file penulisan default ini.
‫Ini disebut
‫penggantian, apa yang akan kita lakukan. Override adalah tempat saya memiliki file Docker
‫Compose standar, dan menetapkan default yang sama di semua lingkungan saya.
‫Lalu, saya punya file override ini yang secara default, Docker Compose, jika diberi nama persis
‫ini, docker compose. mengesampingkan. yml, ini akan secara otomatis memasukkan ini setiap kali saya membuat buruh pelabuhan.
‫Anda akan melihat bahwa dalam skenario ini, kami mengasumsikan pengembangan lokal karena kami benar-benar ingin perintah yang diketikkan dengan
‫tangan akan kami ketik paling mudah secara lokal.
‫Biasanya di lingkungan CI Anda, semuanya otomatis sehingga kami tidak terlalu peduli jika perintah itu
‫sedikit lebih lama.
‫Tapi kami benar-benar ingin secara lokal adalah pembuatan buruh pelabuhan mudah
‫Yang paling keren adalah Docker Compose akan membaca file ini secara otomatis
‫dan akan menerapkannya di atas, atau menimpa, pengaturan apa pun di file Yml Docker Compose.
‫Jadi di sini,
‫perhatikan saya tidak memiliki nama gambar, karena itu sudah ditentukan di sini. Dalam file override ini, saya override
‫dengan mengatakan saya ingin membuat gambar secara lokal menggunakan Dockerfile dalam direktori saat ini.
‫Saya ingin membuat port pada 8080 untuk pengembangan lokal. Dan saya sedang menyiapkan beberapa volume, dan Anda bahkan akan memperhatikan bahwa saya memberi Anda sebuah
‫contoh di sini dari bind mount, di mana saya mungkin melakukan tema khusus. Dan saya ingin me-mount tema saya pada host
‫saya ke dalam wadah seperti yang kami lakukan di bagian sebelumnya, sehingga saya dapat mengubahnya secara lokal
‫dan kemudian melihatnya langsung di server.
‫Ngomong-ngomong, untuk contoh ini, saya tidak benar-benar tahu bagaimana mengembangkan tema di Drupal.
‫Saya tidak yakin bahwa jika saya mengubah file di sana, itu akan secara otomatis tercermin.
‫Saya hanya ingin menunjukkan contoh bagaimana ketika Anda melakukan pengembangan di web, biasanya ini adalah cara yang akan
‫Anda lakukan tanpa harus berhenti dan mulai menulis setiap waktu. Di sini, di bawah postgres, kami memiliki variabel
‫lingkungan dan pengaturan Rahasia seperti sebelumnya. Kami memiliki volume yang ditentukan, dan Anda akan
‫melihat di
‫bagian bawah, saya sebenarnya memiliki rahasia berbasis file karena ketika kami melakukan pengembangan lokal, kami harus menggunakan
‫rahasia berbasis file.
‫Banyak hal menjadi sedikit menarik ketika saya melihat prod ini, atau menguji file. Cara ini akan bekerja
‫adalah, ingat bahwa. mengesampingkan. yml secara otomatis diambil oleh baris
‫perintah Docker Compose. Dalam prod
‫atau tes, saya harus menentukannya secara manual.
‫Jadi untuk pengujian, kita harus menggunakan perintah -f.
‫Jika Anda ingat dari bagian sebelumnya, -f adalah ketika kita membuat buruh pelabuhan menulis bahwa kita ingin
‫menentukan file khusus. Saya akan tunjukkan itu sebentar lagi.
‫Kemudian dalam produksi, karena kita tidak akan benar-benar memiliki baris perintah Docker Compose di server
‫produksi, apa yang akan kita lakukan di sini adalah kita sebenarnya akan menggunakan docker compose config command
‫Perintah config sebenarnya akan melakukan output dengan menekan bersama, atau menggabungkan, output dari beberapa
‫file config.
‫Jadi itu akan sangat keren.
‫Sangat cepat, file tes hanya memiliki drupal dan postgres.
‫Bayangkan jika ini adalah solusi Jenkins CI atau Codeship CI Anda, di mana saya ingin itu membangun gambar setiap
‫kali saya mengkomit kode saya, dan saya ingin menyebutnya ini, dan saya ingin itu ada di
‫port ini untuk tujuan pengujian. Lalu saya akan menggunakan kata sandi palsu. Tapi saya tidak perlu mendefinisikan volume apa
‫pun karena saya tidak akan benar-benar mencoba untuk menjaga volume data karena sekali lagi, itu hanya platform CI.
‫Begitu lulus tes atau gagal, itu akan menyingkirkan semuanya.
‫Kemudian dalam skenario ini, Anda mungkin melihat bahwa saya benar-benar memiliki skenario data sampel ini di
‫mana mungkin dalam solusi CI Anda, Anda hanya memiliki database yang tersimpan di sana, baik dari repositori custom
‫Git atau mungkin itu adalah unduhan FTP. Atau sesuatu terjadi selama inisialisasi CI
‫Anda di mana ia benar-benar mengunduh file database. Dan alih-alih kita harus membuat basis data setiap kali
‫kita melakukan pengujian CI, kita hanya akan me-mount direktori data sampel ini ke tempat data postgres kita
‫seharusnya.
‫Dan dengan begitu, kami dapat menjamin kami memiliki data sampel yang sama setiap kali kami melakukan tes CI.
‫Saya tidak akan membahasnya lebih jauh. Saya hanya ingin menunjukkan bahwa mungkin
‫ini perbedaan file untuk CI.
‫Kemudian dalam produksi, kami memiliki semua masalah produksi normal. Kami menentukan volume untuk data
‫spesifik kami. Kami menentukan rahasia kami. Dan perhatikan di bagian bawah, kita memiliki rahasia eksternal.
‫Karena kita akan sudah menyimpan rahasianya melalui baris perintah seperti yang kita lakukan di
‫tugas sebelumnya.
‫Intinya di sini adalah bahwa ketiga konfigurasi ini berbeda dalam beberapa hal, tetapi
‫mereka semua berhubungan dengan konfigurasi inti, atau konfigurasi dasar, yang hanya mendefinisikan dua layanan dan gambar mereka.
‫Anda bisa lihat di sini. Berikut ini pengingat dari tampilannya.
‫Mari kita keluar dan menjalankan beberapa perintah.
‫Jika saya melihat di direktori ini, Anda akan melihat bahwa saya memiliki file dasar dan kemudian tiga file override.
‫Sekali lagi, ingat, bahwa menimpa. yml adalah default.
‫Jika saya membuat docker compose, apa yang sebenarnya akan dilakukan di sini adalah menggunakan docker-compose. yml terlebih dahulu, lalu
‫overlay override. yml satu di atas. Saya ingin memasukkan
‫-d sehingga kita bisa melihat sekilas setelah dimulai. Saya akan melakukan buruh pelabuhan memeriksa gambar drupal.
‫Dan yang ingin saya tunjukkan kepada Anda ada di sini, semua gunung terdaftar.
‫Jadi kita tahu bahwa ini mengambil file override karena file override adalah tempat kita mendefinisikan semua
‫mount ini.
‫Jadi kita tahu itu mengambilnya.
‫Jelas, jika tidak mengambil basis, ia bahkan tidak akan tahu gambar apa yang digunakan sehingga
‫itu benar-benar akan mengeluh kepada kami dan mengatakan bahwa file Menulis tidak lengkap.
‫Yang itu berhasil.
‫Mari kita lakukan turun cepat nyata.
‫Jika kita benar-benar akan melakukan perintah yang kita butuhkan untuk solusi CI kita, apa yang harus kita
‫lakukan pada solusi CI kita adalah untuk memastikan bahwa Docker Compose ada di sana, dan diinstal, dan tersedia sehingga
‫kita bisa melakukan docker menyusun perintah. Kemudian kita dapat menentukan -f,
‫dan kemudian urutan f adalah file dasar selalu harus terlebih dahulu.
‫Jadi buruh pelabuhan menulis yml, kemudian pekerja menulis ujian.
‫Jika kita melakukan ini dengan up di akhir dan a, dan kemudian saya pergi dan memeriksa drupal yang sama, Anda akan
‫melihat bahwa tidak ada ikatan mengikat.
‫Mereka benar-benar hilang karena dalam file pengujian, kami tidak menentukannya.
‫Kami sebenarnya tidak memerlukan Drupal untuk menyimpan informasi karena itu akan dibuang pada
‫akhir menjalankan CI kami.
‫Dan ketiga, kita memiliki konfigurasi produksi.
‫Konfigurasi produksi akan sedikit berbeda.
‫Saya akan menekan Panah Atas, dan kemudian di sini saya akan melakukan dorongan. Alih-alih perintah naik, apa yang
‫ingin saya lakukan di sini adalah konfigurasi.
‫Jika Anda hanya melihat bantuan sangat cepat untuk konfigurasi, itu hanya memiliki dua opsi dan tidak satu pun dari
‫mereka yang benar-benar relevan dalam situasi ini.
‫Yang ingin kita lakukan hanyalah menjalankan konfigurasi dengan sendirinya. Apa yang sebenarnya akan dilakukan adalah
‫melihat kedua file dan mendorong mereka bersama-sama menjadi satu file yang sama.
‫Jadi yang bisa kita lakukan di sini adalah menjalankan perintah ini di suatu tempat dalam solusi CI kami. Kemudian minta itu output ke
‫file, mungkin dengan Anda tahu, sesuatu seperti itu. File keluaran itu akan menjadi yang akan kami
‫gunakan secara resmi dalam produksi untuk membuat atau memperbarui tumpukan kami.
‫Namun, saya ingin memberikan sedikit peringatan di sini.
‫Ini semua adalah barang yang relatif baru.
‫Kita tahu bahwa Secrets and Swarm Stacks relatif baru.
‫Mereka baru berumur beberapa bulan.
‫Pada rekaman ini.
‫Jadi ada beberapa sisi yang kasar.
‫Kami baru saja menjalankan perintah konfigurasi itu, dan Anda akan benar-benar memperhatikan bahwa rahasia tidak terdaftar di sana.
‫Itu bug saat ini.
‫Saya sebenarnya bekerja dengan tim Docker untuk melihat apakah kita tidak bisa menghilangkan bug itu.
‫Jadi pada saat Anda membaca ini, mungkin sudah diperbaiki.
‫Pastikan Anda memeriksa output dari jalur konfigurasi sebelum Anda mulai
‫melakukan produksi.
‫Kedua, opsi Compose Extends, yang tidak saya bahas di sini, adalah cara lain untuk mengganti file-file Compose
‫ini di mana Anda benar-benar menggunakan file override dan Anda benar-benar menentukan bagian extends di
‫sana.
‫Ini sedikit lebih deklaratif, jadi lebih mudah dimengerti. Saya akan memberikan tautan dalam
‫referensi untuk bagian ini. Ketahuilah bahwa opsi Extends belum berfungsi di tumpukan Swarms.
‫Saya tidak menyebutkannya di sini karena itu tidak benar-benar memberi Anda siklus aplikasi lengkap yang kami
‫harapkan, tapi saya berharap mereka pada suatu saat melakukan sesuatu tentang itu.
‫Suka menambahkannya ke Swarm atau membuat alur kerja yang lebih baik. Karena itulah ide yang kami coba selesaikan
‫dengan semua alat ini, adalah untuk memiliki siklus hidup yang lengkap dan mudah dari pengembangan hingga
‫pengujian, menjadi produksi, dengan konfigurasi yang sama, dalam rangkaian gambar yang sama .
‫Saya harap ini membuat Anda berpikir tentang bagaimana Anda dapat membuat aplikasi Anda dengan cara ini, dan bagaimana
‫Anda dapat memperpanjang file Tulis Anda sendiri untuk skenario yang kompleks.
‫Karena tidak ada yang lebih cepat membuat saya tersenyum dengan Docker daripada ketika saya melihat seseorang menjalankan perintah satu
‫baris untuk melakukan sesuatu yang sebelumnya memerlukan banyak skrip untuk dieksekusi.