Peta dunia

 

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:ro
        Folder web di laptop dipasang ke dalam web, jadi menu baru terus nampak. Transkrip Docker: $ docker compose up -d [+] up 5/5 ✔ Network kedai-kancil_default Created 0.1s ✔ Volume kedai-kancil_db-data Created 0.0s ✔ Container kedai-kancil-web-1 Started 0.3s ✔ Container kedai-kancil-api-1 Started 0.3s ✔ Container kedai-kancil-db-1 Started 0.3s $ echo "<h1>Kedai Kancil: new menu</h1>" > web/index.html $ curl -s localhost:8080 <h1>Kedai Kancil: new menu</h1>

        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.

        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.

        Semak

        Dengan -f, override dev dilangkau. Suntingan laptop tak sampai ke server: laman lama yang keluar. Transkrip Docker: $ docker compose -f compose.yaml -f compose.prod.yaml up -d [+] up 5/5 ✔ Network kedai-kancil_default Created 0.1s ✔ Volume kedai-kancil_db-data Created 0.0s ✔ Container kedai-kancil-web-1 Started 0.3s ✔ Container kedai-kancil-api-1 Started 0.3s ✔ Container kedai-kancil-db-1 Started 0.3s $ echo "<h1>Kedai Kancil: new menu</h1>" > web/index.html $ curl -s localhost:8080 <h1>Kedai Kancil</h1>

        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

        1. docker compose config
        2. docker compose -f compose.yaml -f compose.prod.yaml config

        0 daripada 3 langkah siap · Tanda anda disimpan.