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
profiles
bidang pada layanan didocker-compose.yml
your 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
profiles
Anda bidang. Layanan yang berbagi profil akan bergabung secara otomatis.Untuk memulai layanan yang disertakan dalam profil, tambahkan
--profile
tandai kedocker-compose up
:docker-compose up --profile devPerintah ini akan memulai
app
dandebug
layanan dari file Compose di atas. Jika Anda menjalankandocker-compose up
, menghilangkan--profile
bendera, hanyaapp
layanan akan dimulai.Anda dapat memulai beberapa profil secara bersamaan dengan mengulangi
--profile
bendera. Compose juga mendukungCOMPOSE_PROFILES
variabel lingkungan sebagai alternatif untuk--profile
. Ini menerima daftar nama profil yang dipisahkan koma.Layanan tanpa
profiles
bidang 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 debug
akan memulaidebug-utils
layanan, meskipundev
profil 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-utils
juga memilikidepends_on
, dan layanan tersebut tidak membagikandev
profil, 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--profile
tandai 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
--profile
biasanya 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.yml
WordPress denganmysql
danmariadb
profiles: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
profiles
ke 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