Docker Compose sekarang mendukung profil untuk penggunaan layanan secara selektif. Layanan untuk Anda docker-compose.yml dapat ditautkan ke satu atau lebih profil bernama. Melewati nama profil ke docker-compose up layanan hanya akan dimulai di profil itu, memungkinkan Anda membuat varian tumpukan Anda untuk lingkungan dan konfigurasi tertentu.
Compose sebelumnya berfokus pada pendefinisian 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 segera menggunakan profil.
Profil layanan dapat mengatasi beberapa masalah umum dalam alur pengembangan dan pengujian Docker Compose. Anda mungkin memiliki layanan yang hanya ingin Anda gunakan dalam pengembangan, seperti wadah debug atau layanan pencatatan log. 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. Maka Anda membutuhkan hard untuk digunakan up perintah untuk memulai semua dalam pengembangan:
# docker-compose.yml version: "3" services: app: image: my-app:latest # docker-compose-dev.yml version: "3" services: debug: image: my-app-debug:latest
# start in production docker-compose up -d # start in development docker-compose -f docker-compose.yml -f docker-compose-dev.yml up -d
Profil memungkinkan Anda menggabungkan kedua definisi layanan menjadi satu file. Anda dapat menggunakan bendera atau variabel lingkungan untuk memilih profil tertentu, tanpa mengetik jalur file secara manual. Ini menciptakan pengalaman yang lebih nyaman yang tidak terlalu rumit untuk didokumentasikan, ditulis, dan dioperasikan.
Menentukan Profil
Profil dibuat dengan mengatur profiles bidang dalam layanan untuk Anda docker-compose.yml. Profil didefinisikan sebagai daftar. Setiap layanan dapat diberikan satu atau lebih profil.
version: "3" services: app: image: my-app:latest debug: image: my-app-debug:latest profiles: - dev
Instance profil dibuat secara implisit dari nama yang diberikan kepada . Anda profiles Kosong. Layanan berbagi profil secara otomatis bergabung.
Untuk memulai layanan yang disertakan dalam profil, tambahkan --profile bendera di docker-compose up:
docker-compose up --profile dev
Perintah ini akan memulai hal yang sama app dan debug layanan dari file Compose di atas. Jika kamu lari docker-compose upmenghapus --profile bendera, hanya app layanan akan dimulai.
Anda dapat memulai beberapa profil sekaligus dengan mengulangi --profile bendera Compose juga mendukung COMPOSE_PROFILES variabel lingkungan sebagai alternatif untuk --profile. Ia 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 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, baik layanan tersebut berbagi profil atau tidak memiliki profil yang ditetapkan.
Di sini, berlari docker-compose run debug akan dimulai debug-utils layanan, bahkan dev profil tidak dipilih secara eksplisit:
version: "3" services: app: image: my-app:latest debug-utils: image: my-app-debug-utils:latest profiles: - dev debug: image: my-app-debug:latest depends_on: debug-utils profiles: - dev
Inisialisasi implisit hanya berlaku untuk dependensi langsung dari layanan yang ditentukan. Jika debug-utils juga memiliki depends_ondan layanan itu tidak membagikan dev profil, itu tidak akan dimulai dengan benar.
Agar resolusi ketergantungan berfungsi dengan baik docker-compose run, semua layanan di hierarki harus berbagi profil layanan tingkat atas, atau diaktifkan secara permanen. Jika tidak satu pun dari kondisi tersebut berfungsi, 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. Tambahan --profile biasanya terasa lebih alami daripada menggabungkan beberapa file YAML.
Profil memungkinkan Anda membangun sub-tumpukan dalam aplikasi Compose utama Anda. Pengenalan mereka sebagai bagian dari spesifikasi Compose adalah pengakuan bahwa tumpukan pengembangan sering kali menyertakan layanan tambahan di luar yang digunakan dalam produksi.
Secara keseluruhan, profil membuat Compose lebih fleksibel dengan mempermudah penyesuaian tumpukan. Meskipun dipahami sebagai strategi pengelolaan lingkungan, profil komunitas juga dapat membantu menciptakan berbagai variasi gambar populer. Pikirkan WordPress docker-compose.yml dengan mysql dan mariadb 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 di file Tulis Anda untuk mulai mengaktifkan layanan secara selektif.

