- Docker Compose memungkinkan Anda untuk mendefinisikan dan mengelola beberapa kontainer dari satu file YAML, sehingga memudahkan pekerjaan dengan aplikasi berbasis microservices.
- Bagian layanan bersifat wajib dan dilengkapi dengan jaringan, volume, konfigurasi, dan rahasia untuk mengontrol komunikasi, persistensi, dan konfigurasi.
- Contoh seperti Flask+Redis atau aplikasi full stack dengan frontend, backend, dan database menunjukkan bagaimana Compose menyederhanakan pengembangan dan penerapan.
- Los perintah docker compose up, down, ps dan log Hal tersebut membentuk alur kerja dasar untuk mengangkat, men-debug, dan menghentikan tumpukan kontainer.

Jika Anda sudah bereksperimen dengan kontainer dan melihat bahwa untuk aplikasi "nyata" Anda membutuhkan lebih dari satu layanan berjalan secara bersamaan (basis data, API, frontend, cache…), cepat atau lambat Anda akan menemukan Docker Compose. Alat ini memungkinkan Anda untuk menyiapkan semua perlengkapan tersebut hanya dengan satu file dan beberapa perintah, tanpa perlu repot dengan terminal dan skrip yang tak berujung.
Dalam tutorial ini Anda akan mempelajari apa itu Docker Compose, dan bagaimana cara kerja file-nya. compose.yaml dan cara mengatur aplikasi. Pengaturan multi-kontainer yang bersih: dari contoh sederhana dengan Flask dan Redis hingga arsitektur yang lebih kompleks dengan frontend, backend, dan basis data. Anda juga akan mempelajari tentang jaringan, volume, konfigurasi, rahasia, dan perintah-perintah kunci untuk bekerja dengan nyaman di lingkungan pengembangan dan lingkungan yang lebih menuntut.
Apa itu Docker Compose dan mengapa layak digunakan?
Docker Compose adalah ekstensi Docker yang memungkinkan mendefinisikan dan mengelola beberapa kontainer seolah-olah itu adalah satu aplikasi tunggal. Alih-alih memulai setiap layanan secara manual dengan "docker run" dan parameternya, Anda mendeskripsikan semuanya dalam file YAML dan memulainya dengan satu perintah.
Keindahan Compose terletak pada kenyataan bahwa banyak aplikasi modern dibangun di atasnya. layanan mikro yang berada di dalam kontainer individualBasis data, API, antarmuka pengguna (frontend), sistem antrian, cache mirip Redis, dan lain-lain. Docker merekomendasikan agar setiap kontainer menjalankan satu layanan saja, jadi jika Anda mencoba memasukkan semuanya ke dalam satu image, Anda akan mendapatkan sistem yang sangat besar dan sulit untuk diskalakan dan dipelihara.
Anda dapat menjalankan dua atau lebih layanan dalam kontainer yang sama, tetapi Hal itu meniadakan banyak keunggulan Docker.Jika satu gagal, yang lain akan ikut terpengaruh; Anda tidak bisa hanya meningkatkan skala bagian yang menerima beban paling besar, dan mengelola log, sumber daya, dan kegagalan akan menjadi sangat rumit.
Dengan Docker Compose, Anda mendefinisikan setiap layanan secara terpisah, menentukan bagaimana mereka terhubung satu sama lain, data apa yang mereka simpan, port apa yang mereka ekspos, variabel lingkungan apa yang mereka gunakan… Dengan cara ini Jika satu kontainer mengalami kegagalan, kontainer lainnya dapat terus berfungsi. tergantung pada bagaimana Anda mengkonfigurasinya, dan menskalakan bagian tertentu semudah memodifikasi pengaturannya atau jumlah replikanya.
Selain itu, Compose sangat cocok dengan alur kerja CI/CD dan penerapan ke lingkungan produksiAnda dapat menggunakannya secara langsung dengan alat seperti Portainer atau Docker Swarm, dan jika Anda bekerja dengan Kubernetes, proyek seperti Kompose memungkinkan Anda menerjemahkan file compose.yaml ke dalam manifest Kubernetes tanpa harus menulis ulang semuanya secara manual.
Prasyarat untuk mengikuti tutorial Docker Compose
Untuk dapat mengikuti contoh-contoh dalam tutorial ini dengan nyaman, Anda perlu Pastikan Docker dan Docker Compose sudah terpasang.Saat ini ada dua jalur utama:
- Docker Engine + Docker Compose diinstal sebagai biner mandiri.
- Desktop Dockeryang mencakup Docker Engine, Docker Compose, dan antarmuka grafis.
Penting bagi Anda untuk memiliki dasar minimal berupa... Perintah dasar Docker (gambar, kontainer, port, volume) dan jangan ragu untuk menggunakan baris perintah. Contoh-contoh tersebut biasanya diasumsikan sudah dipahami. Linux (misalnya Ubuntu 22.04), tetapi logikanya berlaku sama di Windows dan macOS dengan Docker Desktop.
Periksa apakah semuanya sudah sesuai dengan menjalankannya di komputer Anda. terminal sesuatu sesederhana itu “docker –version” dan “docker compose version”Jika kedua perintah tersebut merespons tanpa kesalahan, Anda siap untuk melanjutkan dengan contoh-contohnya.
Struktur dasar file compose.yaml
Inti dari Docker Compose adalah file compose.yaml (atau docker-compose.yml)Di situ kita menjelaskan layanan apa yang ingin kita siapkan dan bagaimana layanan tersebut harus saling terkait. Meskipun sebelumnya kolom tersebut digunakan version Untuk menandai versi format, dokumentasi saat ini merekomendasikan untuk tidak menentukannya sehingga versi skema terbaru selalu digunakan.
Di dalam file Compose, Anda akan memiliki beberapa bagian yang mungkin, meskipun hanya satu yang wajib: layananDari situ Anda dapat menambahkan bagian lain tergantung pada kompleksitas proyek Anda:
- layanan: definisi setiap microservice (wajib).
- jaringan: jaringan khusus untuk mengontrol komunikasi antar kontainer.
- volume: volume untuk menyimpan data secara permanen atau membagikannya antar layanan.
- konfigurasi: konfigurasi layanan (misalnya, file konfigurasi server web).
- rahasia: pengelolaan informasi sensitif (kata sandi, kunci API…).
Sepanjang tutorial ini, Anda akan melihat cara menggabungkan semua bagian ini untuk proyek tipikal yang mencakup... aplikasi, basis data, dan APIdan juga contoh aplikasi web di Ular sanca dengan Flask dan Redis.
Layanan di Docker Compose: inti dari definisinya
Bagian Layanan adalah bagian yang sangat penting. dari file Compose mana pun. Di dalamnya Anda mendefinisikan setiap kontainer yang akan membentuk aplikasi Anda, memberinya nama yang Anda inginkan (misalnya, web, database, api, redis, Dll).
Untuk setiap layanan, Anda dapat menetapkan sejumlah besar parameterDi antaranya terdapat beberapa yang banyak digunakan dalam proyek-proyek dunia nyata:
Parameter build menunjukkan lokasi Dockerfile dari situlah citra layanan akan dibangun. Biasanya, konteks (direktori) ditentukan di mana Dockerfile dari aplikasi yang ingin Anda kemas berada.
Jika Anda sudah memiliki gambar yang dibuat atau ingin menggunakan gambar dari registri, Anda dapat menggunakan image untuk merujuknyaNama tersebut mengikuti format [<registry>/][<project>/]<image>[:<tag>|@<digest>]Dan jika Anda perlu mengontrol kapan gambar tersebut diunduh atau diperbarui, Anda dapat menggunakan pull_policy.
Bidang ports Ini digunakan untuk memetakan port antara host dan container.Sintaksnya bertipe [HOST:]CONTAINER[/PROTOCOL]Sebagai contoh, jika basis data PostgreSQL mendengarkan pada port 5432 di dalam kontainer dan Anda ingin mengeksposnya pada port 5555 di host, Anda dapat melakukan hal berikut: "5555:5432" dalam daftar port.
Kebijakan memulai ulang dikendalikan dengan restartyang menunjukkan apa yang harus dilakukan ketika sebuah kontainer berhenti atau mengalami kesalahan. Nilai tipikalnya adalah no, always, on-failure y unless-stoppedMemungkinkan layanan-layanan penting tetap beroperasi meskipun mengalami gangguan sesekali.
Jika suatu layanan memerlukan layanan lain agar tersedia sebelum layanan tersebut dimulai, Anda dapat menggunakan depends_on untuk mendefinisikan ketergantungan antar kontainerContoh klasiknya adalah aplikasi yang membutuhkan basis data agar selalu aktif dan berjalan untuk menghindari kegagalan koneksi awal.
Untuk konfigurasi dan kredensial, Anda memiliki dua pendekatan umum: env_file y environment. Dengan env_file Anda menunjuk ke satu atau lebih file. .env dengan variabel lingkungan, sementara di environment Anda dapat mencantumkannya langsung di YAML. Praktik terbaik adalah menggunakan file. .env untuk mencegah kata sandi dan data sensitif disematkan langsung di dalam file compose.yaml.
Parameter volumes memungkinkan pemasangan jalur host atau volume Di dalam kontainer, Anda akan menggunakan persistensi data dan berbagi folder antar layanan. Di sini, Anda hanya akan merujuk pada volume yang dapat Anda definisikan nanti di bagian atas. volumes jika Anda memerlukan pengaturan agar data tersebut dibagikan atau dikelola secara lebih eksplisit.
Dengan bidang-bidang ini, Anda sudah dapat membangun layanan yang cukup lengkap. Spesifikasi Compose mencakup banyak lagi opsi lanjutan (kesehatan, keterbatasan sumber daya, perintah dari) bootdll.), tetapi dengan ini Anda sudah mencakup sebagian besar penggunaan umum.
Contoh 1: Aplikasi web dalam Python dengan Flask dan Redis
Contoh umum untuk memahami Docker Compose adalah membuat sebuah aplikasi. aplikasi web sederhana dalam PythonMenggunakan Flask untuk menyajikan halaman dan Redis sebagai penyimpanan dalam memori untuk penghitung kunjungan. Idenya adalah Anda tidak perlu menginstal Python atau Redis di mesin Anda: semuanya berjalan di dalam kontainer.
Alur kerjanya kurang lebih seperti ini: pertama, Anda membuat direktori untuk proyek tersebut dan di dalamnya Anda menambahkan sebuah file. app.py dengan kode Flask. Di dalam kode tersebut Anda menggunakan "redis" sebagai nama host dan port 6379, yang merupakan port default untuk layanan Redis di dalam kontainer Anda.
Fungsi yang mengelola penghitung pengunjung Aplikasi tersebut mencoba terhubung ke Redis beberapa kali. Sebelum menyerah, perlu diingat bahwa kontainer Redis mungkin membutuhkan beberapa detik untuk tersedia saat Anda mengangkat seluruh tumpukan.
Selain app.pyAnda membuat file requirements.txt dengan dependensi Python (misalnya Flask dan redis-py), dan Dockerfile yang menentukan cara membangun image aplikasi web Anda: image Python dasar (3.7, 3.10 atau apa pun), direktori kerja, variabel lingkungan untuk Flask, instalasi gcc dan dependensi sistem, salinan requirements.txt, instalasi paket dan salinan kode.
Di dalam Dockerfile, Anda juga menandai port yang akan menampilkan kontainer (misalnya 5000) dan Anda menentukan perintah default, biasanya flask run --debug atau yang serupa, sehingga akan berjalan secara otomatis saat kontainer dibuat.
Setelah semuanya siap, file compose.yaml mendefinisikan dua layanan: satu disebut, misalnya, web, yang dibangun dari Dockerfile proyek dan mengekspos port 8000 secara eksternal (memetakan port 8000 host ke port 5000 kontainer), dan yang lainnya disebut redis bahwa Unduh image Redis resmi dari Docker Hub..
Untuk menjalankan aplikasi, cukup masuk ke direktori proyek dan jalankan "docker compose up"Compose akan mengurus pengunduhan citra Redis, pembuatan citra aplikasi web Anda, dan memulai kedua layanan tersebut dalam urutan yang benar.
Setelah sistem berjalan, Anda masuk menggunakan browser Anda ke http://localhost:8000 (o http://127.0.0.1:8000) dan Anda akan melihat pesan seperti "Hello World" dan sebuah Penghitung pengunjung yang bertambah setiap kali Anda memuat ulang halaman tersebut. Jika Anda memeriksa gambar lokal dengan docker image lsAnda akan melihat sesuatu seperti ini redis y web dibuat atau diunduh.
Saat Anda ingin menghentikan semuanya, Anda bisa melakukan hal berikut: Tekan CTRL+C di terminal tempat Anda meninggalkan perintah "docker compose up" atau melaksanakan docker compose down dari direktori proyek. Ini akan menghentikan dan menghapus kontainer yang dibuat oleh perintah compose tersebut.
Meningkatkan alur kerja: Bind mount dan Compose Watch
Bekerja dalam pengembangan dengan Docker akan lebih nyaman jika Anda tidak perlu merekonstruksi gambar tersebut. Setiap kali Anda menyentuh kode tersebut. Di situlah Bind Mounts dan, pada versi yang lebih baru, Docker Compose Watch berperan.
Bind Mount melibatkan pemasangan folder dari mesin Anda di dalam container. Di dalam file compose.yaml, Anda menambahkan bagian ke layanan web. volumes yang memetakan direktori proyek ke direktori kerja. dari kontainer, misalnya .:/codeDengan cara ini, setiap perubahan yang Anda buat di editor akan langsung tercermin di dalam kontainer.
Jika Anda juga mengaktifkan mode debug Flask dengan variabel tersebut FLASK_DEBUG=1, perintah flask run Aplikasi akan secara otomatis dimuat ulang saat mendeteksi perubahan pada file, tanpa perlu berhenti dan memulai ulang.
Docker Compose Watch melangkah lebih jauh: Anda dapat menggunakan “docker compose watch” atau “docker compose up –watch” Hal ini memungkinkan Compose untuk memantau file proyek dan menyinkronkan perubahan dengan kontainer secara lebih cerdas. Saat Anda menyimpan file, file tersebut disalin ke dalam kontainer, dan server pengembangan memperbarui aplikasi tanpa perlu memulai ulang seluruh kontainer.
Cobalah, misalnya, mengubah pesan selamat datang di app.py dari "Halo Dunia!" hingga frasa seperti "Halo dari Docker"Simpan file tersebut, segarkan browser Anda, dan Anda akan langsung melihat pesan baru sementara penghitung kunjungan terus berjalan tanpa kehilangan statusnya.
Dan ketika Anda selesai bekerja, seperti biasa, Anda bisa menarik docker compose down ayat matikan dan bersihkan wadahnya yang sedang berlangsung dengan tumpukan itu.
Contoh 2: Aplikasi full stack dengan frontend, backend, dan database
Untuk melihat Docker Compose dalam arsitektur yang agak lebih realistis, bayangkan sebuah aplikasi daftar tugas (Daftar Tugas) dengan frontend berbasis Vue.js, API berbasis Node.js, dan database MongoDB. Setiap bagian berada di direktorinya masing-masing dan memiliki Dockerfile sendiri.
Di dalam repositori, Anda mungkin menemukan sebuah folder. frontend dengan aplikasi Vue dan lainnya backend dengan server Node. Backend mengekspos endpoint untuk membuat, mendaftarkan, memperbarui, dan menghapus tugasdan terhubung ke MongoDB untuk menyimpannya. Frontend menggunakan endpoint ini untuk menampilkan dan mengelola daftar tugas di browser.
file docker-compose.yml Ini terletak di inti proyek dan mendefinisikan tiga layanan: frontend, backend y databaseLayanan frontend dibangun dari Dockerfile di folder yang sesuai, biasanya mengekspos port internal 80 dan memetakannya ke port 5173 dari host (misalnya, untuk menggunakan URL yang sama seperti pada pengembangan lokal).
Backend dibangun dari Dockerfile di direktori tersebut. backend, mengekspos port 3000 (baik di dalam maupun di luar kontainer, jika Anda ingin menyederhanakannya) dan menyatakan ketergantungan pada basis data untuk memastikan bahwa MongoDB tersedia saat program dimulai.
Layanan database gunakan secara langsung Gambar resmi MongoDB dan membangun sebuah volume, misalnya mongodb_datadi /data/db, di situlah Mongo menyimpan datanya. Volume tersebut dideklarasikan di bagian atas. volumes dari compose, sehingga data tetap ada meskipun Anda menghapus dan membuat ulang kontainer.
Terakhir, semua layanan ini terhubung melalui jaringan khusus, misalnya my-network, sebagaimana didefinisikan dalam bagian tersebut networksHal ini memungkinkan agar dapat diidentifikasi berdasarkan nama layanan (backend dapat terhubung ke Mongo menggunakan nama host). database) dan bahwa lalu lintas tersebut dienkapsulasi dalam jaringan terisolasi tersebut.
Setelah konfigurasi siap, jalankan docker compose up Inti dari proyek ini adalah tanggung jawabnya untuk... Buat atau unduh gambar dan jalankan ketiga kontainer tersebut.Anda dapat memeriksa apakah semuanya sudah pada tempatnya dengan docker compose pslalu mengakses http://localhost:5173 untuk melihat aplikasi Vue di browser Anda dan membuat tugas pertama Anda.
Jaringan di Docker Compose: menghubungkan layanan satu sama lain
Jaringan adalah lapisan yang memungkinkan kontainer Anda Mereka "saling melihat" dan berbicara dengan cara yang terkendali.Secara default, Docker sudah membuat jaringan untuk Compose, tetapi mendefinisikannya secara eksplisit memberi Anda lebih banyak kejelasan dan kendali atas apa yang dapat berkomunikasi dengan apa.
Cara kerjanya sederhana: setiap layanan mencakup sebuah kolom. networks di mana Anda menunjukkan jaringan mana yang dimilikinya, dan kemudian di bagian atas networks Anda menentukan jaringan-jaringan tersebut beserta konfigurasinya. Pendekatan yang paling umum (dan direkomendasikan dalam banyak kasus) adalah menggunakan driver. bridge.
Jaringan jembatan menciptakan ruang pribadi jaringan untuk kontainer Andadengan resolusi DNS otomatis berdasarkan nama layanan. Itu berarti, misalnya, jika layanan basis data Anda bernama databaseLayanan lain apa pun di jaringan yang sama dapat terhubung hanya dengan menggunakan database sebagai nama host.
Dalam sebuah proyek yang memiliki frontend, backend, dan database, Anda mungkin memutuskan, misalnya, untuk membuat jaringan frontend dan jaringan backend. Frontend akan terhubung ke backend, dan backend ke database, tetapi frontend dan database... Mereka tidak harus berbagi jaringan.mengurangi luas permukaan bagian dalam yang terpapar.
Dalam kode, ini diterjemahkan menjadi sesuatu yang sederhana seperti menetapkan jaringan yang sesuai untuk setiap layanan, dan kemudian mendefinisikan jaringan tersebut dengan driver bridge. Pada tingkat aplikasi, pendekatan paling sederhana adalah menggunakan nama layanan sebagai host saat Anda mengkonfigurasi koneksi: dari app a databaseSebagai contoh, cukup dengan menunjukkan bahwa host basis data adalah "database".
Volume di Docker Compose: Ketahanan data
Volume adalah cara yang direkomendasikan untuk menyimpan informasi yang dihasilkan oleh kontainerSebagai databaseFile pengguna, cadangan, dll. File-file ini juga digunakan untuk berbagi data antar layanan dalam tumpukan yang sama.
Di bagian ini services Anda dapat memasang volume secara langsung dengan volumesNamun, jika Anda ingin volume tersebut dapat diakses oleh beberapa kontainer atau ingin mengelolanya secara lebih eksplisit, Anda juga dapat menentukannya di bagian atas. volumes dari compose.yaml.
Bayangkan Anda ingin menyiapkan sistem pencadangan untuk basis data Anda. Anda akan memiliki layanan basis data yang memasang volume tempat ia menyimpan datanya dan layanan lain yang dikhususkan untuk pencadangan yang Pasang volume yang sama dalam mode baca. untuk melakukan ekspor atau sinkronisasi tanpa menyentuh kontainer utama.
Docker memungkinkan Anda untuk menyempurnakan konfigurasi volume dengan lebih banyak parameter (tipe driver, opsi khusus untuk driver faktor eksternal, dll.), tetapi dalam kebanyakan kasus, hal yang paling praktis adalah membiarkannya terjadi. Docker mengelola volume secara otomatis. tanpa perlu repot dengan konfigurasi yang aneh.
Yang terpenting adalah memastikan folder mana di layanan Anda yang perlu bersifat persisten, dan mendeklarasikannya sebagai volume di Compose agar Anda tidak kehilangan data saat membuat ulang kontainer atau memperbarui image.
Konfigurasi: mengelola file konfigurasi
Bagian configs Ini dirancang untuk mengelola file konfigurasi. dari layanan-layanan dalam tumpukan Anda, mirip dengan volume tetapi secara khusus berfokus pada konfigurasi.
Bayangkan sebuah server Apache atau Nginx yang berjalan di Docker. Anda mungkin akan membutuhkan... sesuaikan file konfigurasi Anda Membangun ulang citra setiap kali Anda memodifikasi file-file ini tidak efisien dan menjengkelkan, terutama di lingkungan di mana parameter sering disesuaikan.
dengan konfigurasi Anda dapat menentukan layanan yang Anda inginkan. menerapkan konfigurasi tertentu lalu jelaskan di bagian tersebut configsAda beberapa cara untuk mendefinisikannya, yang paling umum adalah:
fileKonfigurasi tersebut dihasilkan dari file lokal.external: jika ditandai sebagaitrueCompose mengasumsikan bahwa konfigurasi sudah ada dan hanya dirujuk.name: Nama internal konfigurasi di Docker, berguna saat dikombinasikan denganexternal: true.
Dengan cara ini Anda dapat memperbarui file konfigurasi di mesin Anda dan kembali ke meningkatkan stack tanpa harus membangun ulang image dasar., dengan menjaga agar kode gambar terpisah dari konfigurasi khusus lingkungan.
Rahasia: kredensial dan data sensitif
Bagian secrets memecahkan masalah klasikDi mana saya dapat menyimpan kata sandi, kunci API, dan informasi sensitif lainnya tanpa membiarkannya tersebar di seluruh kode atau YAML?
Sama seperti konfigurasi, rahasia dapat didefinisikan dengan berbagai cara.Hal yang biasa adalah:
fileRahasia tersebut dihasilkan dari isi sebuah file (misalnya, file teks dengan sebuah kunci).environmentRahasia tersebut dibuat menggunakan nilai variabel lingkungan pada sistem Anda.external: menunjukkan bahwa rahasia tersebut telah dibuat dan hanya perlu dirujuk, berguna untuk menghindari penimpaan rahasia yang dikelola dari luar.name: nama internal rahasia, sangat relevan saat menggabungkanexternal: truedengan rahasia yang dibuat oleh alat lain.
Dengan menggunakan rahasia, Anda dapat membuat kontainer yang membutuhkan akses ke kredensial ini. bacalah dengan cara yang terkontrol. tanpa harus membiarkannya terlihat di repositori kode atau di file compose.yaml itu sendiri, sehingga secara signifikan memperkuat keamanan penerapan Anda.
Bekerja dengan banyak file, menyusun dan menyertakan
Dalam proyek-proyek besar, tidak jarang aplikasi Anda dibagi menjadi beberapa layanan, yang terkadang dikelola oleh tim yang berbeda. Dalam kasus ini, akan lebih praktis untuk... pisahkan konfigurasi ke dalam beberapa file Compose untuk memodularisasi arsitektur dengan lebih baik.
Pendekatan yang umum adalah dengan memiliki compose.yaml File utama untuk aplikasi dan file lain untuk bagian-bagian infrastruktur. Misalnya, Anda dapat pindahkan definisi Redis atau layanan dukungan file lainnya infra.yaml dan hanya sertakan hal-hal yang berkaitan langsung dengan aplikasi Anda dalam komposisi utama.
Untuk melakukan ini, Anda membuat file tersebut. infra.yaml dengan bagiannya sendiri services di mana Anda meninggalkan, misalnya, layanan Redis lengkap. Kemudian, di dalam compose.yaml utama, Anda menambahkan bagian include yang mengarah ke file infra.yaml.
Saat kamu lari docker compose up Dari direktori proyek, Compose Gabungkan kedua file tersebut dan ini menampilkan semua layanan seolah-olah berada dalam satu file YAML, tetapi Anda tetap memiliki logika yang terpisah dan lebih terorganisir.
Teknik ini memudahkan tim yang berbeda untuk memelihara file Compose mereka sendiri dan untuk aplikasi global agar dapat dirakit menggunakan include, yang sangat berguna dalam arsitektur dengan puluhan kontainer atau lingkungan dengan banyak infrastruktur yang digunakan bersama.
Perintah Docker Compose yang Penting
Meskipun Compose memiliki katalog perintah yang bagus, dalam pekerjaan sehari-hari kebanyakan orang menggunakan segelintir di antaranya secara berkalaPenting untuk menguasai hal-hal tersebut karena hal-hal itulah yang menentukan alur kerja Anda.
Yang terpenting adalah docker compose upPerintah ini membangun image yang diperlukan (jika belum ada), membuat container, mengkonfigurasi jaringan dan volume, serta memulai semua layanan yang didefinisikan dalam file Compose Anda. Ini adalah perintah yang Anda gunakan ketika ingin memulai stack Anda.
Biasanya dikombinasikan dengan opsi -d untuk menjalankannya dalam mode "terpisah"Artinya, berjalan di latar belakang. Dengan cara ini, Anda tidak akan memenuhi terminal dengan log dan dapat terus menggunakan sesi tersebut untuk perintah lain. Misalnya: docker compose up -d.
Untuk berhenti dan membersihkan apa yang telah Anda angkat, Anda menggunakan docker compose downyang menghentikan dan menghapus kontainer, jaringan, dan secara opsional gambar dan volume terkait. Dua flag yang sangat umum di sini adalah --rmi (untuk menghapus gambar) dan -v (untuk menghapus volume yang ditentukan di bagian tersebut) volumes).
Jika Anda ingin melihat kontainer mana yang merupakan bagian dari proyek dan bagaimana statusnya, Anda dapat menjalankan perintah berikut: docker compose psIni mencantumkan setiap layanan, statusnya (aktif, keluar, dll.), dan port yang terekspos, yang sangat berguna untuk memverifikasi bahwa semuanya berfungsi dengan benar setelah terjadi penghentian layanan. up.
Saat Anda menjalankan stack dalam mode terpisah (detached mode), log tidak akan muncul di terminal. Untuk melihatnya, Anda perlu menggunakan... docker compose logsbaik secara global atau dengan memfilter berdasarkan layanan. Bendera tersebut -f Ini memungkinkan Anda untuk melacak log secara real-time, sangat berguna untuk men-debug layanan tertentu tanpa perlu mengakses bagian dalam kontainer.
Alur kerja tipikal: mendefinisikan compose.yaml, jalankan sebuah docker compose up -d, periksa dengan docker compose ps, tinjau log dengan docker compose logs -f <servicio> Jika terjadi kesalahan, dan setelah Anda selesai, gunakan docker compose down untuk meninggalkan semuanya dalam keadaan bersih.
Jika Anda tersesat, docker compose --help Ini menampilkan daftar subperintah dan opsi yang tersedia untuk membantu Anda mengingat fungsi masing-masing tanpa harus membuka dokumentasi.
Berdasarkan semua hal di atas, alat kunci Bagi siapa pun yang bekerja dengan kontainer di luar proyek individual, Compose adalah alat yang hebat. Alat ini memungkinkan Anda untuk mengembangkan langsung di lingkungan yang sangat mirip (atau identik) dengan lingkungan produksi, mengontrol layanan, jaringan, dan data dari file YAML sederhana, serta menghindari sejumlah masalah kompatibilitas dan penyebaran yang pasti muncul saat hanya bekerja "secara lokal" tanpa kontainer. Setelah Anda terbiasa menulis file YAML Compose yang baik untuk proyek Anda, akan sulit untuk kembali ke cara lama.
Penulis yang bersemangat tentang dunia byte dan teknologi secara umum. Saya suka berbagi ilmu melalui tulisan, dan itulah yang akan saya lakukan di blog ini, menunjukkan kepada Anda semua hal paling menarik tentang gadget, perangkat lunak, perangkat keras, tren teknologi, dan banyak lagi. Tujuan saya adalah membantu Anda menavigasi dunia digital dengan cara yang sederhana dan menghibur.
