Mencegah Mac tidur selama Docker build

Cara tercepat untuk mencegah Mac tidur saat Docker build adalah membungkus build tersebut dalam idle-sleep assertion: caffeinate -i docker build -t myapp . di Terminal, atau perintah gratis milik LidRun sendiri, lidrun -- docker build -t myapp ., yang melakukan hal sama tanpa perlu lisensi. Keduanya mencegah idle timer Mac memutus build yang bisa berjalan puluhan menit dengan beban CPU tinggi terus-menerus — tapi tak satu pun dari keduanya memantau baterai Anda, memantau panas yang dihasilkan compile yang panjang, atau membuat build dengan lid tertutup tetap berjalan sendiri. Berikut solusi command-line gratis ini, di mana batasannya saat menghadapi build sungguhan, dan bagaimana LidRun menambahkan lapisan keamanan di atasnya.
Mengapa mode tidur membatalkan Docker build
docker build berjalan di latar belakang selagi Anda beralih ke hal lain — membaca kode, membalas pesan, menutup lid untuk pindah ruangan. Itulah situasi persis di mana idle timer default atau lid yang tertutup memicu Mac tidur.


Tidur tidak menjeda build dengan sopan lalu melanjutkannya lagi. Ia memutus proses tersebut di tengah layer. Tergantung di mana ia berhenti, Anda kehilangan layer cache yang sedang Anda tunggu dan harus rebuild dari titik yang lebih jauh ke belakang daripada yang Anda inginkan — kadang seluruh layer instalasi dependency, kadang hanya langkah RUN terakhir.
Build yang benar-benar terkena masalah ini adalah image multi-stage dengan instalasi dependency yang lambat atau langkah compile yang besar, serta build cross-architecture — docker buildx build --platform linux/amd64,linux/arm64 -t myapp . menjalankan setiap target melalui emulasi di Mac dan bisa memakan waktu berkali-kali lipat lebih lama dibanding build native. Itulah build yang justru bertahan lebih lama daripada idle timer default.
Solusi gratis dan native: caffeinate dan pmset
Dua perintah yang sudah ada di setiap Mac menangani kasus umum ini, tanpa perlu instalasi apa pun. caffeinate -i docker build -t myapp . menjalankan build sebagai child process dari caffeinate, menahan assertion 'prevent idle sleep' selama build berjalan, dan melepaskannya secara otomatis begitu docker build selesai — baik berhasil maupun gagal. Jika build sudah berjalan di tempat lain, caffeinate -w <pid> menempel ke process id tersebut, bukannya menjalankan perintah baru.
LidRun menyediakan trik yang sama persis sebagai perintah CLI gratis: lidrun -- docker build -t myapp . mengambil assertion macOS yang identik (kIOPMAssertionTypePreventUserIdleSystemSleep — sama seperti yang digunakan flag -i milik caffeinate) di sekitar child process tersebut dan melepaskannya saat perintah selesai. Tidak perlu lisensi dan tidak perlu app berjalan di latar belakang; ini adalah wrapper mandiri, ide yang sama seperti caffeinate tapi dengan nama LidRun.
Untuk build yang dijalankan di tab Terminal yang akan Anda tinggalkan, sudo pmset noidle memblokir idle sleep di seluruh sistem sampai Anda menekan Ctrl-C — tidak ada target command, hanya penahanan menyeluruh yang harus Anda hentikan sendiri.
Di mana caffeinate dan pmset kurang memadai pada build sungguhan
Tidak satu pun dari kedua perintah ini memantau suhu atau baterai. caffeinate -i dan lidrun -- ... menahan assertion dengan kekuatan yang sama baik saat SoC idle dan dingin maupun saat panas, dan baik baterai di 80% maupun 3% — keduanya tidak punya 'pendapat', mereka hanya menahan sampai perintah yang dibungkus selesai.
idle-sleep assertion tidak meng-override sleep saat lid tertutup. Tutup lid di tengah build tanpa monitor eksternal terpasang, dan Mac tetap akan tidur begitu saja meski caffeinate atau CLI wrapper sedang menahannya — untuk itu Anda butuh sudo pmset disablesleep 1, yang memengaruhi perilaku tidur seluruh Mac, bukan cuma build tersebut. Lupa menjalankan pmset disablesleep 0 setelahnya, dan Mac tidak akan tidur sendiri lagi, baik lid terbuka maupun tertutup, sampai Anda melakukannya.
Tidak satu pun dari ini membersihkan dirinya sendiri kalau Anda lupa. Tab terminal cadangan yang masih menjalankan caffeinate atau pmset noidle dari build sejam lalu tetap membuat Mac terjaga — dan, saat memakai baterai, tetap hangat — lama setelah tidak ada lagi yang perlu dilindungi.
Bagaimana LidRun menambahkan lapisan keamanan
App LidRun versi penuh melakukan deteksi yang sama, tapi dengan governor yang mengawasinya. Auto Mode sudah menyertakan docker dan docker-compose di daftar pantau default-nya, jadi build langsung terdeteksi begitu dimulai — tidak perlu konfigurasi apa pun. Auto Mode juga memeriksa CPU: proses yang cocok perlu melewati sekitar 20% CPU (ambang default) sebelum dianggap aktif, dengan holdoff sekitar satu menit supaya jeda singkat tidak menjatuhkan penahanan di tengah build.
Pemeriksaan CPU ini biasanya bukan masalah untuk proses compiler dan package-manager milik build itu sendiri, tapi tergantung setup Docker Desktop Anda, beban berat bisa terjadi di dalam proses VM latar belakang sementara client docker sendiri hampir idle, hanya streaming output. Untuk itulah Smart Rule bawaan "Docker → keep awake + balanced cooling" dibuat: rule ini aktif hanya karena docker terdeteksi ada, tanpa ambang CPU, dan langsung menyalakan Keep Awake plus profil pendinginan balanced begitu melihat prosesnya berjalan.
Selain deteksi, Safety Governor milik LidRun mengawasi build yang sama. Jika SoC mencapai level thermal kritis, ia langsung melepaskan penahanan keep-awake, di semua mode dan semua sumber daya. Jika kondisi kritis itu bertahan dan Anda sedang tidak di depan Mac — atau lid tertutup — ia meningkat menjadi membiarkan Mac benar-benar tidur, alih-alih membiarkan fan bertarung dalam pertarungan yang sudah kalah. Pengguna yang hadir dengan lid terbuka tidak pernah dipaksa tidur hanya karena panas; LidRun melepaskan penahanan supaya macOS yang memutuskan, ia tidak memutus sesi Anda begitu saja.
Baterai mendapat perlakuan bertahap yang serupa: secara default LidRun memberi peringatan di sekitar 15%, meningkat di 5%, dan tidak akan menahan melewati batas bawah yang tidak bisa turun di bawah 4% — berhenti secara terkendali lebih baik daripada berhenti tak terkendali. Auto-stop dasar ini gratis untuk semua orang; Pro menambahkan kemampuan menyesuaikan setiap ambang batas. Ini adalah trade-off yang sama yang LidRun terapkan di tempat lain: selama agent — atau build — masih berjalan, tetap terjaga; setelah selesai atau tidak aman, lepaskan.
Menyiapkannya untuk Docker build
Gratis, tanpa lisensi: lidrun -- docker build -t myapp . dari Terminal memberikan perlindungan yang sama seperti caffeinate -i, hanya saja memakai binary milik LidRun sendiri. Ini berjalan mandiri — app versi penuh tidak perlu dibuka.
Dengan app terbuka, Auto Mode sudah memiliki docker di daftar default-nya, jadi build langsung terdeteksi tanpa perlu menyentuh Settings. Jika Anda lebih suka versi berbasis presence — berguna saat proses client itu sendiri berjalan adem — buka Smart Rules dari menu dan aktifkan rule bawaan "Docker → keep awake + balanced cooling". Auto Mode dan Smart Rules adalah fitur Pro; Keep Awake, Timer, dan Charging-only run tetap gratis dan tanpa batas.
Untuk build yang ingin Anda pastikan tetap bertahan meski lid tertutup, pasangkan salah satu di atas dengan Closed-Lid mode (juga Pro), di permukaan yang keras dan berventilasi serta tersambung ke listrik. Closed-Lid mode adalah satu-satunya bagian di app yang diizinkan memanggil pmset disablesleep, dan selalu memasangkan 'on' dengan 'off' yang sesuai — saat stop, saat quit, dan saat peluncuran berikutnya — jadi Anda tidak perlu mengingat untuk membatalkannya sendiri.
Untuk build multi-platform sekali jalan dari sebuah script, CLI wrapper biasanya paling sederhana: lidrun -- docker buildx build --platform linux/amd64,linux/arm64 -t myapp . menjaga Mac tetap terjaga persis selama build cross-architecture berlangsung dan melepaskannya begitu selesai.
Kapan Anda benar-benar membutuhkan ini
Ini untuk build yang panjang — image from-scratch, full rebuild lokal ala CI, run buildx multi-platform lewat emulasi, base image yang sedang Anda iterasi dan memakan waktu sungguhan. Itulah build yang bertahan lebih lama daripada idle timer dan pantas dilindungi.
Rebuild cepat dengan cache yang masih hangat selesai dalam hitungan detik dan tidak pernah mendekati sleep timer — semua ini tidak diperlukan untuk iterasi sehari-hari.
Jika build panjang sudah mati karena lid tertutup atau idle timeout lebih dari sekali, itu tandanya: gunakan CLI wrapper gratis untuk sekali jalan, atau app versi penuh dengan Auto Mode dan pengawasan suhu berjalan di latar belakang kalau Anda lebih suka semuanya ditangani tanpa perlu dipikirkan lagi.
Tips untuk build berat
Sambungkan ke listrik untuk build besar. Beban CPU yang terus-menerus — atau, dengan buildx, CPU teremulasi di dua arsitektur sekaligus — menguras baterai laptop dengan cepat, dan daya dari listrik membuat perhatian safety governor tetap pada suhu, bukan pada level baterai.
Letakkan Mac di permukaan yang keras dan berventilasi, terutama saat lid tertutup. Panas dari compile yang panjang harus keluar ke suatu tempat, dan tas atau permukaan empuk menutup ventilasi yang seharusnya menyalurkan panas itu keluar.
Perlakukan build buildx multi-platform sebagai kasus 'build panjang' meski build native yang setara biasanya selesai dengan cepat — cross-compiling lewat emulasi berjalan lebih panas dan memakan waktu jauh lebih lama per arsitektur target.
Jika sebuah build bisa hang atau loop — langkah RUN yang flaky dan dicoba ulang tanpa henti, docker compose up yang dibiarkan tanpa --build — jangan sampai itu menahan Mac tetap terjaga tanpa batas waktu secara tidak sengaja. CLI wrapper tetap melepaskan penahanan begitu perintah selesai, apa pun hasilnya, dan cooldown pada Smart Rule mencegah LidRun terus-menerus terpicu ulang pada container yang crash-loop.
LidRun menjaga pekerjaan Anda tetap jalan saat layar tertutup, dengan perlindungan baterai dan suhu bawaan.
Sudah punya LidRun? Baca panduan setup-nya →
Baru kenal LidRun? Lihat harga →
Sering ditanyakan
Ya, selama status baterai dan suhu tetap berada dalam ambang batas aktif — secara default, peringatan sekitar 15%, eskalasi di 5%, dan batas bawah force-sleep yang tidak bisa turun di bawah 4%. Jika salah satu batas tercapai, atau SoC mencapai level thermal kritis, LidRun melepaskan penahanan (dan, jika Anda sedang tidak di depan Mac atau lid tertutup, membiarkan Mac benar-benar tidur) alih-alih memaksakan build tetap berjalan.
Secara mekanis, tidak banyak bedanya untuk satu perintah saja — CLI lidrun -- docker build ... milik LidRun sendiri menahan idle-sleep assertion yang identik dengan yang digunakan flag -i milik caffeinate, dan ini gratis. Perbedaannya muncul begitu app versi penuh berjalan: Auto Mode dan Smart Rule Docker bawaan langsung mendeteksi build tanpa Anda perlu mengetik perintah wrapper, dan Safety Governor menambahkan kesadaran suhu dan baterai yang tidak dimiliki caffeinate biasa — caffeinate menahan assertion-nya dengan kekuatan yang sama, seberapa pun panasnya Mac.
CLI wrapper lidrun -- docker build ... biasa gratis dan tidak perlu lisensi — ide yang sama seperti caffeinate. Deteksi otomatis di dalam app (daftar pantau default Auto Mode, dan Smart Rule Docker bawaan) adalah bagian dari LidRun Pro. Keep Awake, Timer, dan Charging-only run tetap gratis dan tanpa batas.
Dengan Closed-Lid mode aktif (Pro), boleh, selama kondisi tetap berada dalam batas baterai dan suhu Anda — permukaan yang keras, berventilasi, dan tersambung ke listrik sangat disarankan. Tanpa Closed-Lid mode, menutup lid akan membuat Mac tidur terlepas dari apa yang sedang ditahan oleh caffeinate, lidrun --, atau Auto Mode, karena tidak satu pun dari itu bisa meng-override sleep saat lid tertutup dengan sendirinya.
Jika sebuah ambang batas keamanan mengakhiri sesi — atau lid tertutup tanpa Closed-Lid mode aktif — build akan berhenti seperti build yang terinterupsi pada umumnya, dan Anda mungkin kehilangan layer yang sedang Anda kerjakan. Menjaganya tetap tersambung listrik, tetap dingin, dan berada di dalam opsi keep-awake pilihan Anda, itulah yang membuatnya bisa berjalan sampai selesai dan mempertahankan cache.
Tidak, selama build terkonfirmasi masih aktif. Pengaman unattended-idle milik LidRun hanya melepaskan penahanan saat sudah terkonfirmasi tidak ada apa pun yang benar-benar berjalan — proses docker yang benar-benar aktif, atau yang cocok dengan Smart Rule, tetap mempertahankan penahanan terlepas dari berapa lama Anda sudah menjauh dari keyboard. Batas suhu dan baterai-lah, bukan sekadar waktu idle, yang bisa mengakhiri build aktif lebih awal.
Tidak secara mekanis — proses docker buildx build --platform ... tetap hanya terlihat sebagai docker bagi Auto Mode dan Smart Rule. Perbedaannya bersifat praktis: build cross-architecture lewat emulasi berjalan lebih lama dan lebih panas dibanding build native, jadi inilah kasus yang paling pantas dipasangkan dengan Closed-Lid mode, daya listrik, dan permukaan berventilasi, ketimbang dijalankan begitu saja.