EN: Read in English
Dunia D4: Set Hidangan
Dev lawan prod: fail override
Anda akan belajar: jalankan satu aplikasi dua cara, dengan satu fail kongsi dan tambahan kecil.
Teks BM belum disemak oleh penutur asli.
Disemak dengan Docker Engine 29 pada 31 Okt 2026
Masalahnya
Laptop anda mahu suntingan cepat. Server kedai mahu terus hidup sendiri. Satu fail tak boleh kata kedua-duanya. Susun setiap hajat.
Seret kad ke dalam kotak. Atau ketik kad, kemudian ketik kotak.
Tengok
# compose.override.yaml
services:
web:
volumes:
- ./web:/usr/share/nginx/html:roLaptop anda~/kedai-kancil
- Tiada tingkap terbuka
Bekas (container)
- Belum ada container
Pek beku (image)
- kedai-kancil-api:latest6 layer · 244MB
- kedai-kancil-web:latest9 layer · 92.6MB
- nginx:1.30-alpine8 layer · 93.5MB
- node:24-alpine4 layer · 244MB
- postgres:18-alpine9 layer · 433MB
- redis:8-alpine7 layer · 162MB
0 container (0 berjalan), 6 image, 0 loker.
Benda yang dikongsi kekal dalam compose.yaml. Tambahan laptop masuk ke compose.override.yaml. Compose baca fail override (override file): Fail compose kedua yang diletak atas fail pertama. compose.override.yaml dibaca sendiri; yang lain perlukan -f. ini sendiri dan letak di atas.
Teka
Dua fail tetapkan kunci yang sama. Fail pertama kata satu nilai, fail kemudian kata nilai lain. Mana yang menang?
Pilih satu jawapan.
Cuba
Hidupkan versi server: compose.yaml dengan compose.prod.yaml. Namakan kedua-dua fail dengan -f, asas dulu.
Laptop anda~/kedai-kancil
- Tiada tingkap terbuka
Bekas (container)
- Belum ada container
Pek beku (image)
- kedai-kancil-api:latest6 layer · 244MB
- kedai-kancil-web:latest9 layer · 92.6MB
- nginx:1.30-alpine8 layer · 93.5MB
- node:24-alpine4 layer · 244MB
- postgres:18-alpine9 layer · 433MB
- redis:8-alpine7 layer · 162MB
0 container (0 berjalan), 6 image, 0 loker.
Petunjuk
docker compose -f compose.yaml -f compose.prod.yaml up -dSemak
Laptop anda~/kedai-kancil
- Tiada tingkap terbuka
Bekas (container)
- Belum ada container
Pek beku (image)
- kedai-kancil-api:latest6 layer · 244MB
- kedai-kancil-web:latest9 layer · 92.6MB
- nginx:1.30-alpine8 layer · 93.5MB
- node:24-alpine4 layer · 244MB
- postgres:18-alpine9 layer · 433MB
- redis:8-alpine7 layer · 162MB
0 container (0 berjalan), 6 image, 0 loker.
Kenapa laman lama? Dengan -f, Compose baca fail yang anda namakan sahaja. Tiada pasangan folder dev, jadi laman datang dari image.
Anda berjaya!
Kini anda boleh jalankan satu aplikasi dua cara: dev dan prod.
Nak tahu lebih (pilihan)
Cara fail bergabung: satu nilai (seperti image) diganti. Senarai seperti ports ditambah bersama. environment bergabung ikut nama. volumes bergabung ikut laluan di dalam bekas. Buat larian kering dulu: docker compose -f compose.yaml -f compose.prod.yaml config.
Misi sebenar
docker compose configdocker compose -f compose.yaml -f compose.prod.yaml config
0 daripada 3 langkah siap · Tanda anda disimpan.
English
Your laptop wants quick edits. The shop’s server wants to stay up by itself. One file can’t say both. Sort each wish.
# compose.override.yaml
services:
web:
volumes:
- ./web:/usr/share/nginx/html:roShared things stay in compose.yaml. Laptop extras go in compose.override.yaml. Compose reads this override file by itself and lays it on top.
Two files set the same key. The first says one value, the later file says another. Which one wins?
Start the server version: compose.yaml plus compose.prod.yaml. Name both files with -f, base first.
docker compose -f compose.yaml -f compose.prod.yaml up -dWhy the old page? With -f, Compose reads only the files you name. No dev mount, so the page comes from the image.
You can now run one app two ways: dev and prod.
Anda dah siapkan ini. Latihan lagi pun bagus!
Dokumentasi rasmi: Merge Compose files · Use Compose in production · docker compose -f
Anda dah belajar 25 minit. Rehat sekejap bantu otak anda.
Pecutan selesai! Fokus yang hebat. Regangkan badan seminit?