Dari perintah terminal ke berkas konfigurasi

Ubah docker run ke Compose

Simpan perintah yang sudah berhasil dipakai menjadi konfigurasi yang mudah dicek lagi. Tempel docker run untuk menyusun port, variabel, dan volume ke dalam YAML.

docker runcompose.yaml
Diproses di browser
01

Tempel satu perintah. Tanda kutip dan sambungan baris dengan garis miring terbalik didukung. Hasil berubah saat diketik.

02

compose.yaml

services:
  web:
    image: "nginx:alpine"
    container_name: "web"
    ports:
      - "8080:80"
    volumes:
      - "./html:/usr/share/nginx/html:ro"
    restart: "unless-stopped"
    network_mode: "bridge"

5 opsi · 1 layananYAML

Sebelum dijalankan

  • Mode latar belakang dipilih saat mulai. Gunakan docker compose up -d.
  • Path relatif dihitung dari compose.yaml. Periksa lokasi berkas atau gunakan path absolut.
  • network_mode: bridge mempertahankan jaringan bawaan docker run. Hapus kolom ini agar Compose membuat jaringan proyek.
Periksa secara lokaldocker compose config

Tanpa akun dan tanpa menjalankan perintah. Masukan diproses di browser Anda.

Konfigurasi yang tidak bergantung pada riwayat terminal

Perintah panjang mudah terlupakan saat harus menyiapkan ulang server. Dengan compose.yaml, pengaturan image, port, dan variabel lingkungan tersusun dalam kolom masing-masing. Berkas ini bisa disimpan bersama proyek agar perubahan konfigurasi lebih mudah ditinjau.

Satu perintah menghasilkan satu layanan. Konverter tidak membaca kontainer yang sedang berjalan, mengubah server, atau menebak ketergantungan antarlayanan. Hasilnya merupakan konfigurasi awal yang perlu diperiksa di lingkungan tujuan.

Cara membuat berkas Compose

Tempel perintah yang diawali docker run atau docker container run. Pertahankan tanda kutip untuk nilai yang mengandung spasi dan garis miring terbalik di akhir baris lanjutan. Nama layanan opsional hanya mengubah kunci di bawah services, bukan container_name yang berasal dari --name.

Baca catatan konversi, simpan YAML, lalu pastikan direktori dan berkas rujukannya berada di lokasi yang benar. Jalankan docker compose config untuk memeriksa konfigurasi. Layanan yang terus berjalan dapat dimulai dengan docker compose up -d.

Contoh Nginx dengan pemetaan port

Port 8080 pada host diteruskan ke port 80 di kontainer. Kebijakan restart unless-stopped tetap ada dalam YAML. Opsi -d dipilih saat menjalankan Compose, sehingga tidak ditulis sebagai pengaturan layanan.

docker run -d --name web -p 8080:80 \
  --restart unless-stopped nginx:alpine
services:
  web:
    image: "nginx:alpine"
    container_name: "web"
    ports:
      - "8080:80"
    restart: "unless-stopped"
    network_mode: "bridge"

Pastikan volume lama tetap terpakai

Volume bernama memakai nama aslinya dan ditandai external: true. Tujuannya agar Compose merujuk volume yang sudah ada, bukan membuat volume baru dengan awalan nama proyek. Untuk pemasangan baru, buat volume terlebih dahulu atau hapus penanda eksternal tersebut. Data tidak disalin oleh konverter.

Path relatif dihitung dari direktori berkas Compose. Jaringan kustom juga diperlakukan sebagai jaringan eksternal yang harus sudah ada. Tanpa opsi jaringan, hasil mempertahankan network_mode: bridge. Hapus kolom itu jika ingin memakai jaringan proyek Compose dan resolusi nama layanan.

Selesaikan ekspansi shell sebelum menempel

Masukan memakai sintaks POSIX, termasuk tanda kutip, escape, dan sambungan baris. PowerShell, CMD, pipeline, beberapa perintah, serta opsi global Docker tidak didukung. Ganti variabel dan $(pwd) dengan nilai sebenarnya. Lindungi tanda dolar literal dengan kutip tunggal atau escape; hasil Compose menggunakan $$.

--env-file ditulis dengan format: raw, sehingga memerlukan Docker Compose 2.30.0 atau lebih baru. Konverter tidak membuka berkas, memeriksa image, atau memastikan port tersedia. Lolos pemeriksaan konfigurasi belum menjamin aplikasi berhasil berjalan.

Padanan opsi Docker dalam Compose

Opsi DockerKolom ComposeFungsi
IMAGEimageImage dan tag tetap sama
--namecontainer_nameNama kontainer yang ditentukan
-p, --publishportsPemetaan port host ke kontainer
-e, --envenvironmentNilai yang kosong ditentukan lingkungan eksekusi
-v, --volume / --mountvolumesBind mount serta volume bernama atau anonim
--networknetworks / network_modeNama jaringan atau mode jaringan
--restartrestartKebijakan restart
IMAGE [COMMAND] [ARG…]commandArgumen dipertahankan sebagai daftar

Pertanyaan seputar konversi

Mengapa tidak ada version?

Keluaran mengikuti Compose Specification dengan services sebagai kunci teratas. Kolom version lama tidak ditambahkan. Gunakan perintah modern docker compose untuk memeriksa berkas.

Bagaimana menangani --rm?

Untuk tugas sekali jalan, gunakan docker compose run --rm --service-ports SERVICE dan ganti SERVICE dengan nama layanan. --service-ports menerapkan pemetaan port dari berkas.

Apakah opsi yang tidak didukung akan dibuang?

Tidak. Opsi seperti --gpus, --link, dan beberapa pengaturan mount lanjutan menghentikan konversi. Bagian tersebut perlu dikonfigurasi manual agar tidak hilang tanpa diketahui.

Bisa menggabungkan beberapa perintah?

Konversikan satu per satu, lalu gabungkan definisi layanannya. Sesuaikan volume bersama, jaringan, dan ketergantungan sebelum menjalankan proyek.

Apakah kata sandi dikirim ke server?

Perintah diproses di browser dan tidak diunggah. Namun nilai yang dimasukkan tetap berada di berkas hasil, jadi periksa sebelum menyimpannya ke repositori publik.

Bagaimana dengan kontainer yang sudah aktif?

Konversi tidak menjalankan operasi Docker. Saat memulai Compose, tangani benturan nama kontainer dan port yang sudah digunakan.

Dokumentasi resmi Docker: docker run · Compose · $$