Storage driver pada Chapter Storage Driver dan Snapshotter menentukan tempat data tinggal, sedangkan environment variable menentukan bagaimana aplikasi berperilaku begitu container menyala — dari kata sandi database yang dibaca entrypoint, sampai nama project Compose yang dibaca plugin dari shell kita. Variabel-variabel ini tersebar di tiga wilayah yang berbeda: yang dibaca image resmi, yang dibaca program docker di sisi klien, dan yang dibaca docker compose — dan mencampuradukkan ketiganya adalah sumber kebingungan yang sering kita bedah sejak Chapter Environment Variable di Section Konfigurasi Container. Chapter ini menghimpun ketiga wilayah tersebut menjadi tiga tabel rujukan yang bisa discan sekali pandang.
Variabel Image Resmi #
Setiap image resmi mendefinisikan nama variabelnya sendiri — konsisten di dalam satu image, tetapi tidak universal antar image, pola yang kita buktikan pada Chapter Environment Variable. Enam belas entri berikut adalah yang paling sering kita setel sepanjang Course:
| Variabel | Berlaku untuk | Fungsi | Contoh nilai |
|---|---|---|---|
POSTGRES_PASSWORD | postgres | Kata sandi superuser — wajib saat inisialisasi pertama | rahasia123 |
POSTGRES_USER | postgres | Nama superuser pengganti postgres | budi |
POSTGRES_DB | postgres | Basis data awal yang dibuat saat init | katalog |
POSTGRES_PGDATA | postgres | Lokasi direktori data di dalam container | /var/lib/postgresql/data/pg |
MYSQL_ROOT_PASSWORD | mysql | Kata sandi root saat inisialisasi pertama | rahasia123 |
MYSQL_DATABASE | mysql | Basis data awal yang dibuat saat init | toko |
MYSQL_USER | mysql | User tambahan dengan hak pada basis data awal | app |
MYSQL_PASSWORD | mysql | Kata sandi untuk user tersebut | rahasia123 |
MARIADB_ROOT_PASSWORD | mariadb | Padanan kata sandi root milik MariaDB | rahasia123 |
MARIADB_DATABASE | mariadb | Padanan basis data awal | toko |
MARIADB_USER | mariadb | Padanan user tambahan | app |
MARIADB_PASSWORD | mariadb | Padanan kata sandi user | rahasia123 |
NODE_ENV | aplikasi Node.js | Mode perilaku aplikasi — produksi atau pengembangan | production |
PORT | banyak aplikasi | Port yang didengarkan aplikasi — konvensi generik | 3000 |
DATABASE_URL | banyak aplikasi | String koneksi lengkap ke database | postgres://app:rahasia123@db:5432/katalog |
LOG_LEVEL | banyak aplikasi | Tingkat kelantangan log aplikasi | info |
Variabel bertanda “saat inisialisasi pertama” punya satu batasan penting: kelimanya hanya dibaca ketika direktori data masih kosong. Volume lama yang sudah terisi membuat entrypoint melompati inisialisasi, sehingga mengganti POSTGRES_PASSWORD pada volume yang sudah hidup tidak mengubah apa pun — perilaku yang kita manfaatkan dan kita waspadai pada Chapter Inisialisasi Database.
Variabel Docker CLI #
Kelompok kedua tidak dibaca container sama sekali — variabel-variabel ini dibaca program docker itu sendiri sebelum berbicara dengan daemon, cara berpindah lingkungan tanpa mengetik flag global berulang kali, materi Chapter Konfigurasi Docker CLI dan Memahami Docker Context:
| Variabel | Berlaku untuk | Fungsi | Contoh nilai |
|---|---|---|---|
DOCKER_HOST | klien docker | Endpoint daemon yang dituju klien | unix:///var/run/docker.sock |
DOCKER_CONTEXT | klien docker | Context aktif bawaan untuk seluruh pemanggilan | vps |
DOCKER_CONFIG | klien docker | Lokasi direktori konfigurasi klien | ~/.docker |
DOCKER_CLI_HINTS | klien docker | Mematikan petunjuk yang muncul di output perintah | false |
Perbedaan DOCKER_HOST dan DOCKER_CONTEXT adalah pemetaan ulang dari flag global: DOCKER_HOST menunjuk alamat mentah daemon, sedangkan DOCKER_CONTEXT menunjuk entitas bernama yang berisi alamat itu beserta detail lainnya. Keduanya bisa menimpa satu sama lain — urutan prioritasnya kita susuri pada Chapter Memahami Docker Context — dan keduanya berhenti berpengaruh begitu flag --host atau --context ditulis eksplisit pada perintah.
Variabel Compose #
Kelompok ketiga dibaca plugin docker compose dari environment shell kita sebelum berkas compose.yaml diproses. Variabel-variabel ini mengendalikan identitas project dan berkas mana yang dibaca, materi Chapter Compose Override dan Environment dan Profiles:
| Variabel | Berlaku untuk | Fungsi | Contoh nilai |
|---|---|---|---|
COMPOSE_PROJECT_NAME | docker compose | Nama project pengganti nama direktori | katalog |
COMPOSE_PROFILES | docker compose | Profile yang aktif saat perintah dijalankan | dev,ci |
COMPOSE_FILE | docker compose | Jalur berkas pengganti compose.yaml di direktori aktif | compose.yaml:compose.override.yaml |
COMPOSE_IGNORE_ORPHANS | docker compose | Mematikan peringatan container orphan | true |
Nilai COMPOSE_FILE yang memakai pemisah titik dua menunjuk lebih dari satu berkas — mekanisme utama override yang membiarkan berkas produksi menimpa berkas dasar. Nilai COMPOSE_PROFILES memakai koma untuk mengaktifkan beberapa profile sekaligus, padanan flag --profile yang sudah kita pakai pada Chapter Profiles.
Tiga tabel ini menuntaskan konfigurasi berbasis variabel — dan dengan seluruh perintah, instruksi, kunci, state, driver, serta variabel kini terhimpun, satu wilayah terakhir menanti: pesan-pesan galat yang menghubungkan semuanya ketika sesuatu berjalan salah. Chapter berikutnya, Error dan Solusi, menyusun lima belas pesan error Docker yang paling sering muncul beserta penyebab dan solusinya.
Referensi #
- postgres di Docker Hub — daftar resmi variabel POSTGRES_* beserta perilaku inisialisasinya.
- mysql di Docker Hub — daftar resmi variabel MYSQL_* dan batasan inisialisasinya.
- Environment variables di Compose — referensi seluruh variabel COMPOSE_*.