‫Kuliah ini akan membahas tentang menambahkan pembentukan gambar ke dalam file Menulis Anda sehingga secara otomatis
‫memastikan bahwa Anda memiliki gambar yang siap
‫digunakan ketika Anda menjalankan perintah penulisan. Seperti dosen lain di bagian ini,
‫Anda benar-benar perlu memiliki pemahaman yang baik tentang wadah Docker dan fungsionalitas baris perintah gambar Docker.
‫Hal lain yang dapat dilakukan Compose untuk Anda adalah membangun gambar Anda saat runtime. Ini sebenarnya akan mencari dalam cache untuk gambar,
‫dan jika ia memiliki opsi membangun di dalamnya, itu akan membangun gambar itu ketika Anda menggunakan perintah naik.
‫Itu tidak akan membangun gambar setiap saat.
‫Itu hanya akan membangunnya jika tidak menemukannya.
‫Anda harus menggunakan builder compose docker untuk membangun kembali gambar jika Anda
‫mengubahnya, atau Anda dapat menggunakan docker compose up --build.
‫Kami benar-benar akan melihatnya sebentar lagi.
‫Ini sangat bagus untuk ketika Anda menggunakan Compose secara lokal dan Anda memiliki gambar yang ingin Anda buat. Mungkin Anda tidak ingin menggunakan
‫volume mount. Anda sebenarnya ingin menyalin file, atau sesuatu, ke dalam gambar.
‫Perintah build Anda mungkin cukup rumit. Itu mungkin memiliki beberapa variabel lingkungan kustom atau
‫membangun argumen.
‫Omong-omong, buat argumen, kita belum bicarakan. Itu benar-benar hanya variabel lingkungan yang
‫tersedia hanya selama membangun. Anda dapat melihat dokumen. buruh pelabuhan. dokumentasi com di Dockerfiles
‫dan itu akan berbicara tentang membangun argumen secara mendalam
‫Di sini, kita akan melihat contoh bagaimana Anda dapat menggunakannya secara lokal.
‫Saya berada di direktori contoh penulisan. Anda dapat melihat di sini saya memiliki file Tulis Docker yang dibuat
‫sebelumnya di sini.
‫Saya sebenarnya memiliki Dockerfile bernama nginx. Dockerfile. Kemudian konfigurasi nginx serupa dengan apa
‫yang kita miliki sebelumnya, di mana kita sebenarnya menggunakan Nginx sebagai proxy terbalik untuk situs web kita.
‫Jika kita masuk ke Docker Compose, Anda dapat melihat bagaimana saya merancang solusi ini.
‫Saya sebenarnya punya dua layanan.
‫Salah satunya adalah proxy Nginx seperti sebelumnya, dan satu lagi adalah server web Apache seperti sebelumnya.
‫Tetapi beberapa hal berbeda.
‫Alih-alih saya menentukan gambar default untuk Nginx, saya sebenarnya membangun yang khusus.
‫Anda dapat melihat di sini bahwa saya telah benar-benar memberikan beberapa argumen di mana saya
‫mengatakan bahwa Dockerfile yang perlu digunakan adalah Dockerfile bernama khusus.
‫Saya ingin itu membangun Dockerfile di direktori saat ini. Saya ingin memberi nama gambar
‫itu ketika membangunnya,
‫nginx -custom. Ini akan menyimpannya di cache lokal saya. Kemudian di bagian bawah, kami memiliki
‫server web yang menjalankan Apache.
‫Apa yang saya lakukan di sini adalah saya telah menginstal beberapa file sumber HTML yang saya miliki ke server Apache.
‫Jadi skenario di sini adalah mungkin saya seorang pengembang
‫web, saya memiliki situs web statis di
‫sini, di bawah direktori HTML ini yang saya tidak perlu terlalu khawatir.
‫Itu hanya menggunakan template bootstrap kecil.
‫Saya akan mengeditnya secara lokal, di editor saya di sini, tetapi saya tahu ketika saya mulai berproduksi dengan
‫ini, itu sebenarnya akan duduk di belakang proxy Nginx.
‫Jadi, saya ingin meniru lingkungan produksi sebanyak mungkin, secara lokal, hanya untuk memastikan bahwa saya telah
‫menyingkirkan bug atau masalah. Dalam hal ini, saya
‫ingin Nginx ini, dan saya tahu bahwa konfigurasi Nginx ini adalah yang akan mereka
‫gunakan pada server produksi, sehingga saya hanya akan menggunakannya di sini.
‫Ini sebenarnya konfigurasi Nginx yang sama seperti sebelumnya.
‫Ketika saya menjalankan docker compose up command, pertama-tama akan memeriksa nama
‫gambar ini di cache saya. Jika tidak menemukannya, maka akan menggunakan perintah build ini di sini
‫untuk mencari Dockerfile dan kemudian membangun gambar saya. Anda dapat melihat dari Dockerfile ini, sebenarnya cukup sederhana.
‫Ini hanya akan menggunakan versi Nginx tertentu dan kemudian hanya akan menyalin file.
‫Ini akan mendapatkan sisa informasinya dari konfigurasi Nginx dari Docker Hub dan kemudian akan
‫menyalin di konfigurasi Nginx saya.
‫Jika Anda ingat pada contoh sebelumnya, kami sebenarnya melakukan bind mount untuk mendapatkan konfigurasi Nginx ini melalui
‫file penulisan kami.
‫Dalam hal ini, kami hanya menginginkannya untuk membangun keseluruhan gambar.
‫Kami tidak benar-benar perlu mengubah konfigurasi proxy ini, jadi saya tidak benar-benar perlu memasangnya sehingga saya
‫dapat mengubahnya setiap saat.
‫Saya hanya ingin itu berjalan. Kanan? Jadi, saya akan membangunnya. Biarkan di cache gambar. Setelah dibangun
‫pertama kali, tidak perlu terlalu sering dibangun kembali.
‫Jadi saya hanya akan pergi dari sana.
‫Kemudian ketika saya mengedit dan mengembangkan di situs web saya, saya akan memiliki konfigurasi
‫ini sehingga saya dapat melakukan pengeditan langsung. Jika kita kembali ke sini dan aku membuat buruh pelabuhan,
‫mari kita selidiki apa yang terjadi.
‫Ini pertama kali menciptakan jaringan.
‫Itu hal yang normal. Itu yang terjadi.
‫Kemudian terlihat bahwa layanan proxy tidak memiliki gambar yang dicari. Jadi itu akan membangun
‫itu.
‫Jadi itu mengeluarkan Dockerfile dan membangunnya seperti itu akan melakukan perintah build docker normal.
‫Maka itu memberi saya tip bermanfaat ini untuk memberi tahu saya bahwa itu membangun gambar kali ini karena tidak
‫dapat menemukannya.
‫Tetapi di masa depan, jika saya perlu mengubah gambar itu, saya akan perlu menggunakan docker compose
‫build atau docker compose up --build command. Sekarang punya gambar,
‫itu benar-benar dapat membuat wadah. Kemudian mulai server web saya dan server proxy saya.
‫Jika semuanya bekerja dengan benar, saya harus bisa mendapatkan localhost. Ini menarik template default saya di sini, yang
‫sebenarnya merupakan template bootstrap.
‫Sepertinya semuanya berfungsi.
‫Sebenarnya, saya pergi ke sini dan saya bisa melihat semua log saya muncul dan jelas ada banyak aset. Ada entri log untuk masing-masing
‫dan itu akan melalui proxy dan melalui server web.
‫Karena saya sudah mengikat mount direktori itu untuk mengedit, saya benar-benar dapat kembali ke editor saya. Sebagai pengembang web, saya bisa masuk dan mungkin,
‫Anda tahu, mengedit sesuatu di situs web. Mungkin saya akan masuk
‫ke judul bootstrap awal, yang seharusnya menjadi judul kecil ini di sini.
‫Saya hanya akan menyimpan file itu. Lalu jika saya menyegarkan, situs web saya diperbarui karena ikatan mount lagi.
‫Ini adalah contoh yang bagus dari pengaturan pengembang yang sangat umum di mana Anda perlu membuat beberapa gambar
‫khusus secara lokal.
‫Anda juga perlu me-mount beberapa file ke aplikasi Anda sehingga Anda dapat mengeditnya saat runtime.
‫Dan, tentu saja, jika ini perlu aplikasi berbasis database, saya hanya akan menambahkan layanan
‫ketiga di sini untuk server database. Kemudian, saya akan kembali dan melakukan pembersihan.
‫Anda akan melihat bahwa, secara default, itu tidak akan benar-benar menghapus gambar itu.
‫Anda akan melihat di bagian atas di sini, kami memiliki kebiasaan nginx yang dibuatnya. Tapi ada buruh pelabuhan yang menulis
‫perintah.
‫Jika Anda melihat bantuan, Anda melihat bahwa ada opsi rmi yang benar-benar menghapus gambar yang mungkin
‫dibuat atau sedang digunakan.
‫Ada opsi aktual di sini yang mengatakan, 'hapus hanya gambar yang tidak memiliki tag khusus yang diatur oleh bidang
‫gambar. 'Satu
‫hal yang bisa saya lakukan di sini jika saya ingin membuat ini sedikit lebih otomatis, adalah saya bisa mengeluarkan
‫perintah gambar itu di sana. Mari kita hapus itu. Lalu aku ingin membersihkan dengan cepat. Saya
‫hanya akan menghapus gambar saya. gambar buruh pelabuhan rm kustom. Seperti yang Anda lihat, itu sudah ada di sana.
‫Baiklah. Saya ingin membuat buruh pelabuhan menulis lagi.
‫Dan kali ini kita akan melakukan -d.
‫Anda akan melihat seluruh contoh Compose ini, yang sebenarnya menamakan wadah, volume, dan
‫jaringan dengan nama direktori sebagai nama proyek.
‫Itu sebenarnya sesuatu di Compose di mana, untuk mencegah konflik
‫nama, sebenarnya akan selalu menambahkan nama direktori pada awal semua aset sehingga mereka tidak bertentangan dengan
‫yang lain.
‫Anda sebenarnya dapat mengubah nama proxy itu melalui baris perintah.
‫Jika Anda pergi memeriksa dokumentasi Menulis.
‫Tapi poin yang ingin saya sampaikan di sini adalah jika saya membuat gambar buruh pelabuhan. Di sini, Anda akan melihat bahwa gambar itu benar-benar menamai
‫gambar saya untuk saya.
‫Jadi saya tidak secara teknis harus menggunakan opsi gambar itu.
‫Tetapi jika saya menginginkan nama tertentu untuknya sehingga saya bisa mengidentifikasinya nanti, saya bisa.
‫Alasan saya mengemukakan hal ini adalah sebenarnya ini sedikit lebih bersih karena yang
‫bisa saya lakukan adalah buruh pelabuhan, dan ingat dalam bantuannya, katanya saya bisa menggunakan jenis rmi. Jadi ketika saya membersihkannya, dan saya ingin menjaga
‫lingkungan Docker saya tetap bersih, saya bisa melakukan rmi lokal.
‫Apa yang akan dilakukan sebenarnya menghapus gambar-gambar itu juga.
‫Anda akan melihat di sini di bagian bawah bahwa itu menghapus gambar.
‫Bukan sesuatu yang saya lakukan sepanjang waktu, tetapi mungkin jika saya memiliki proyek besar dengan banyak gambar khusus
‫dan saya tidak ingin meledakkan sistem saya ketika saya tidak mengembangkan proyek itu, saya akan menggunakan
‫rmi local , dan itu akan selalu melacak gambar khusus yang harus dibuatnya.
‫Tentu saja, di sini jika saya menggunakan semuanya, sebenarnya akan menghapus setiap gambar yang digunakan dalam proyek
‫ini yang mungkin tidak ingin Anda lakukan karena dalam hal ini, mungkin menghapus server web Apache httpd, dan Anda
‫mungkin ingin gambar tinggal sebentar saja. BAIK.
‫Anda belajar banyak tentang Menulis di bagian ini.
‫Kita akan menggunakan Compose sepanjang sisa kursus ini.
‫Kami akan terus membangun keterampilan ini seiring berjalannya waktu.