Docker Compose
Deploy file Compose sebuah repositori sebagai satu stack: aplikasi, database, dan layanan data yang di-deploy bersama dan saling terhubung lewat nama.
Akses awal. Docker Compose terbuka untuk akun yang diundang selama kami mengujinya. Minta undangan ke tim Raklane; sebelum itu, Docker Compose tidak muncul di project Anda.
Jika project Anda sudah berjalan dengan docker compose up, misalnya aplikasi Laravel dengan MySQL dan Redis, Raklane bisa men-deploy file Compose yang sama sebagai sebuah stack. Setiap service menjadi aplikasi atau database di project Anda. Service-service itu di-deploy bersama dan tetap saling terhubung lewat nama Compose-nya, sehingga DB_HOST=mysql dan REDIS_HOST=redis tetap bekerja tanpa diubah.
Men-deploy file Compose
- Buka Project Anda lalu pilih Docker Compose → Deploy Docker Compose.
- Sumber. Masukkan repositori dan branch. Untuk repositori privat, pilih access token atau SSH key dari Secrets. Raklane mencari
compose.yamlataudocker-compose.ymldi root; isi path lain jika file Anda ada di tempat lain. - Service. Raklane membaca file itu dan menampilkan akan menjadi apa setiap service, beserta hal yang tidak bisa diterapkan. Di sini Anda bisa:
- mengubah sebuah service antara aplikasi dan layanan data
- menyalakan atau mematikan URL publik
- memilih secret untuk setiap build secret yang dipakai file Compose
- Deploy. Beri nama stack, pilih tempat berjalannya, dan pilih ukuran untuk database-nya.
Database berjalan lebih dulu. Lalu aplikasi di-deploy sesuai urutan depends_on, masing-masing setelah yang ia butuhkan sudah berjalan. Semuanya di-build dari commit yang sama.
Menjadi apa setiap service
| Di file Compose Anda | Di Raklane |
|---|---|
Service dengan build: | Aplikasi yang di-build dari Dockerfile Anda: context, dockerfile, target, args, dan build secrets-nya |
postgres, mysql, atau mariadb | Database terkelola dengan backup |
| Redis, Valkey, MongoDB, Elasticsearch, RabbitMQ, MinIO, Meilisearch, atau image apa pun dengan named volume | Layanan data: image Anda, dengan health check, backup, dan rollback otomatis |
| Image lainnya | Aplikasi yang menjalankan image itu |
Raklane melihat apa sebenarnya sebuah service, bukan hanya cara file Compose Anda mendapatkannya. Service build: yang Dockerfile-nya diawali FROM mysql:9.7 (ditambah file konfigurasi, misalnya) menjadi MySQL 9.7 terkelola. Yang diawali FROM redis menjadi layanan data Redis. Raklane menampilkan peringatan bahwa langkah-langkah Dockerfile itu sendiri tidak diterapkan. Service yang menyimpan datanya di /var/lib/mysql, atau mengatur MYSQL_ROOT_PASSWORD, dikenali dengan cara yang sama. Jika tebakan Raklane salah, pilih ia berjalan sebagai apa di langkah Service.
Beberapa pengaturan Compose lain ikut terbawa:
- Port.
- Entri
ports:pertama yang dipublikasikan memberi aplikasi URL publik. - Service yang hanya
expose:port bersifat privat: hanya service lain di project yang bisa menjangkaunya. - Service tanpa port, seperti queue worker, cukup berjalan.
- Entri
environmentdanenv_filemenjadi environment variable aplikasi. Nilai${VAR}diambil dari.envmilik repositori itu sendiri.commanddanentrypointmenjadi start command aplikasi.healthcheckyang meminta sebuah URL menjadi health check HTTP aplikasi.healthchecklayanan data dijalankan di dalam layanan itu.
Password database. Database terkelola membuat user dan password-nya sendiri. Di mana pun environment aplikasi memakai user, password, atau nama database yang diberikan file Compose Anda untuk database itu, termasuk di dalam URL koneksi seperti mysql://laravel:secret@mysql/laravel, Raklane memasukkan nilai yang sebenarnya. Anda tidak perlu mengubah .env.
Yang tidak ikut terbawa. Hal-hal ini ditampilkan sebagai peringatan sebelum Anda men-deploy:
privileged,cap_add,devices,network_mode, danuser- bind mount, serta volume di aplikasi (aplikasi bersifat stateless: simpan data di database atau layanan data)
secretsruntime (atur sebagai environment variable)
Halaman stack
Halaman stack menampilkan setiap service dalam bentuk grafik. Panah utuh berasal dari depends_on. Panah putus-putus adalah koneksi yang ditemukan Raklane sendiri: nama service lain yang dipakai sebagai host di environment sebuah service (DB_HOST=db), atau di file konfigurasi yang disalin Dockerfile-nya (fastcgi_pass app:9000). Arahkan kursor ke panah untuk melihat di mana koneksi itu ditemukan. Keduanya menentukan urutan deploy, sehingga db sudah berjalan sebelum aplikasi yang memakainya. Setiap service menampilkan statusnya dan terhubung ke halaman aplikasi atau database-nya sendiri, tempat log, metrik, backup, dan pengaturan seperti biasa. Dari halaman stack Anda bisa:
- Redeploy: men-deploy ulang semua aplikasi di commit terbaru branch.
- Sync from Compose: melihat apa yang berubah di file Compose (service yang ditambah atau dihapus, image baru, environment variable baru), lalu menerapkannya.
- Layanan data dengan image baru di-backup lebih dulu, dan di-rollback otomatis jika versi barunya tidak berjalan. Misalnya, Redis tidak bisa turun ke versi lama yang tidak bisa membaca datanya.
- Service yang dihapus tetap berjalan sendiri kecuali Anda mencentangnya untuk dihapus.
- Auto deploy: jika aktif, sebuah push ke branch melakukan sync dan men-deploy seluruh stack sekali, bukan sekali per aplikasi.
- Delete: menghapus aplikasi-aplikasinya. Database tetap ada di project kecuali Anda memilih menghapusnya juga.
Perlu diketahui
- Satu stack berjalan di satu server, sehingga service-nya bisa saling terhubung lewat nama.
includedandockerfile_inlinetidak didukung, dan file di luar repositori tidak bisa dirujuk.- Variable yang Anda hapus dari file Compose tetap ada di aplikasi sampai Anda menghapusnya di sana.