Docker Compose sekarang mendukung profil untuk penggunaan layanan secara selektif. Layanan di docker-compose.yml . Anda dapat ditautkan ke satu atau lebih profil bernama. Meneruskan nama profil ke docker-compose up hanya akan memulai layanan di profil itu, memungkinkan Anda membuat varian tumpukan untuk lingkungan dan konfigurasi tertentu.
Compose sebelumnya berfokus untuk mendefinisikan satu tumpukan yang merupakan distribusi kanonik dari aplikasi Anda. Profil menambahkan lebih banyak ruang untuk menyesuaikan bagian tumpukan mana yang akan digunakan, membuat rangkaian layanan yang kompleks menjadi lebih modular dan dapat dikonfigurasi.
Mengapa Menggunakan Profil?
Penggunaan profil sepenuhnya opsional. File Docker Compose Anda yang ada akan terus berfungsi dan tidak perlu langsung mengadopsi profil.
Profil layanan mengatasi beberapa frustrasi umum dengan alur pengembangan dan pengujian Docker Compose. Anda mungkin memiliki layanan yang hanya ingin Anda gunakan dalam pengembangan, seperti wadah debug atau layanan logging. Saat Anda dalam produksi, Anda tidak memerlukan layanan tersebut dan ingin menghindari memulainya.
Sebelumnya, untuk mencapai ini diperlukan pemisahan definisi layanan Anda di beberapa file. Anda kemudian akan membutuhkan up yang berat perintah untuk memulai semuanya dalam pengembangan:
# docker-compose.ymlversion:"3"services:app:image:my-app:latest # docker-compose-dev.ymlversion:"3"services:debug:image:my-app-debug:latest# mulai di productiondocker-compose up -d# mulai di developmentdocker-compose -f docker-compose.yml -f docker-compose-dev.yml up -dProfil memungkinkan Anda menggabungkan kedua definisi layanan menjadi satu file. Anda dapat menggunakan flag atau variabel lingkungan untuk memilih profil tertentu, tanpa mengetikkan jalur file secara manual. Ini menciptakan pengalaman yang lebih nyaman tanpa kerumitan untuk mendokumentasikan, menulis, dan menjalankan.
Mendefinisikan Profil
Profil dibuat dengan menyetel
profilesbidang pada layanan didocker-compose.ymlyour Anda . Profil ditentukan sebagai daftar. Setiap layanan dapat diberikan satu atau banyak profil.versi:"3" layanan:aplikasi:gambar:aplikasi saya:debug terbaru:gambar:aplikasi-saya-debug:profil terbaru:- devInstance profil dibuat secara implisit dari nama yang diberikan ke
profilesAnda bidang. Layanan yang berbagi profil akan bergabung secara otomatis.Untuk memulai layanan yang disertakan dalam profil, tambahkan
--profiletandai kedocker-compose up:docker-compose up --profile devPerintah ini akan memulai
appdandebuglayanan dari file Compose di atas. Jika Anda menjalankandocker-compose up, menghilangkan--profilebendera, hanyaapplayanan akan dimulai.Anda dapat memulai beberapa profil secara bersamaan dengan mengulangi
--profilebendera. Compose juga mendukungCOMPOSE_PROFILESvariabel lingkungan sebagai alternatif untuk--profile. Ini menerima daftar nama profil yang dipisahkan koma.Layanan tanpa
profilesbidang akan selalu dimulai, terlepas dari profil yang diminta. Setelah layanan diberi profil, itu hanya akan dimulai jika profil itu telah diminta. Untuk layanan dengan beberapa profil, meminta salah satu dari mereka akan memungkinkan layanan untuk memulai.Profil Implisit Dimulai
Profil akan selalu diabaikan jika Anda memulai layanan secara manual menggunakan
docker-compose run. Dalam hal ini, Compose juga akan memulai layanan apa pun yang bergantung pada layanan yang diminta, jika mereka berbagi profil atau tidak memiliki profil yang ditetapkan.Di sini, jalankan
docker-compose run debugakan memulaidebug-utilslayanan, meskipundevprofil belum dipilih secara eksplisit:versi:"3" layanan:aplikasi:gambar:aplikasi saya:debug-utils terbaru:gambar:utilitas-aplikasi-saya:profil terbaru:- debug dev:gambar:aplikasi-saya-debug:depend_on terbaru :profil debug-utils:- devMulai implisit hanya berlaku untuk tanggungan langsung dari layanan yang ditentukan. Jika
debug-utilsjuga memilikidepends_on, dan layanan tersebut tidak membagikandevprofil, itu tidak akan memulai dengan benar.Agar resolusi ketergantungan berfungsi dengan baik dengan
docker-compose run, semua layanan di hierarki harus berbagi profil layanan teratas, atau diaktifkan secara permanen. Jika kedua kondisi tersebut tidak terpenuhi, Anda harus menambahkan--profiletandai untuk secara eksplisit mengaktifkan profil tambahan yang diperlukan.Ringkasan
Profil layanan adalah fitur Compose yang memudahkan untuk mengelola berbagai kombinasi layanan. Dengan menggunakan profil, Anda dapat menghindari pemisahan layanan menjadi beberapa file Tulis. Menambahkan
--profilebiasanya terasa lebih alami daripada menggabungkan beberapa file YAML menjadi satu.Profil memungkinkan Anda membangun sub-tumpukan dalam aplikasi Compose utama Anda. Pengenalan mereka sebagai bagian dari spesifikasi Compose adalah pengakuan bahwa tumpukan dalam pengembangan sering kali menyertakan layanan tambahan di luar yang digunakan dalam produksi.
Secara umum, profil membuat Compose lebih fleksibel dengan memfasilitasi penyesuaian tumpukan. Meskipun dibayangkan sebagai pendekatan untuk pengelolaan lingkungan, profil juga dapat membantu komunitas membuat berbagai variasi gambar populer. Pikirkan
docker-compose.ymlWordPress denganmysqldanmariadbprofiles:sekarang Anda dapat dengan mudah beralih di antara layanan database yang telah dikonfigurasi sebelumnya untuk memilih mesin yang sesuai dengan preferensi Anda.Docker Compose 1.28 memperkenalkan profil awal tahun ini. Selama Anda memiliki biner Compose versi terbaru, atau Docker Desktop untuk Windows dan Mac, Anda dapat menambahkan
profileske file Compose Anda untuk mulai mengaktifkan layanan secara selektif.
Cara Mengamankan Data Sensitif Dengan Rahasia Penulisan Docker Cara Menandatangani Gambar Docker Anda untuk Meningkatkan KepercayaanDocker