Generator Docker Compose

Apa yang berjalan di stack ini

Berikutnya

Menulis docker-compose.yml dengan tangan berarti mengingat indentasi yang tepat, mengutip setiap pemetaan port, dan tahu string versi mana yang dipahami program Compose Anda. Generator ini memungkinkan Anda mendefinisikan service melalui field sederhana: nama, image, pemetaan port host:container, dan volume. Hasilnya file YAML valid sesuai spec Compose modern (tanpa key version) dengan default yang masuk akal.

Cara membangun file Compose

  1. 1

    Tambahkan service

    Beri setiap layanan nama dan image, lalu isi pemetaan port, volume, variabel lingkungan, dan kebijakan restart. Dua layanan awal sudah terisi dan langsung bisa jalan apa adanya.

  2. 2

    Ubah atau hapus baris

    Edit field apa pun langsung, tambah service lain dengan tombol + Service, atau hapus baris yang tidak perlu.

  3. 3

    Periksa YAML yang dihasilkan

    Periksa YAML yang dihasilkan: pemetaan port diberi tanda kutip, setiap named volume dideklarasikan di akhir file, dan kunci version dihilangkan, sesuai yang diharapkan spesifikasi Compose modern.

  4. 4

    Salin file

    Salin docker-compose.yml yang dihasilkan dan tempel ke root proyek Anda.

Spec Compose modern

Compose V2 (plugin yang disertakan dengan Docker Desktop dan Docker Engine modern) mengikuti Compose Specification. Key version: sudah usang; generator menghilangkannya. Key tingkat atas adalah services, networks, volumes, configs, dan secrets.

Anatomi service

Sebuah service yang condong ke produksi tampak seperti ini:

services:
  web:
    image: nginx:1.27-alpine
    restart: unless-stopped
    ports:
      - "80:80"
    volumes:
      - ./public:/usr/share/nginx/html:ro
    depends_on:
      app:
        condition: service_healthy
    networks:
      - frontend
      - backend
    healthcheck:
      test: ["CMD", "wget", "--spider", "-q", "http://localhost/health"]
      interval: 30s
      timeout: 5s
      retries: 3

Volume: bind mount vs named

  • Bind mount (./app:/var/www) mengikat container ke path di host; bagus untuk pengembangan lokal karena perubahan langsung tercermin.
  • Named volume (pgdata:/var/lib/postgresql/data) dikelola Docker dan persisten tanpa bergantung pada path host mana pun; pilihan tepat untuk database dan apa pun yang tidak ingin Anda hapus tak sengaja dengan rm -rf.
  • Anonymous volume - hindari. Ia bertahan saat restart tetapi menghilang pada docker compose down -v tanpa peringatan.

Network

Secara default Compose membuat network yang dinamai sesuai proyek dan menghubungkan setiap service ke sana. Mendeklarasikan network eksplisit berguna saat:

  • Anda ingin mengisolasi database dari service yang menghadap publik.
  • Anda butuh bridge dengan subnet kustom untuk selaras dengan infrastruktur yang ada.
  • Anda ingin melampirkan container ke network eksternal yang sudah ada (external: true).

Kesalahan umum yang sebaiknya dihindari

  • Konflik key version. version: "3.8" di atas mencegah fitur lebih baru seperti start_interval healthcheck berfungsi di Compose lama; generator menghilangkan key version.
  • Kutipan port. 8080:80 terurai sebagai YAML base-60 dalam beberapa edge case; generator selalu mengutip pemetaan port.
  • Secret yang di-hardcode. Secret yang ditulis langsung di compose.yml berakhir ter-commit ke git. Simpan dalam env_file atau di tempat penyimpanan secret platform.
  • depends_on tanpa condition. depends_on: [db] biasa menunggu container mulai, bukan service siap. Gunakan condition: service_healthy dan tambahkan healthcheck pada dependensi.

Pertanyaan yang Sering Diajukan

Compose Specification saat ini (selaras dengan Docker Compose V2). File menghilangkan key version:, yang merupakan cara file Compose modern ditulis. Berfungsi dengan Docker Compose V2.22 dan yang lebih baru.

Lewat formulir belum bisa. Formulir mencakup image, port, volume, variabel lingkungan, dan kebijakan restart, serta mendeklarasikan semua named volume yang di-mount layanan Anda seperti yang diminta Compose. Network dan health check ditambahkan sendiri ke YAML hasilnya.

Tidak, tool ini berfokus pada compose.yml. Untuk Dockerfile, gunakan Dockerfile Generator, yang menangani pilihan base image dan urutan COPY/RUN untuk lima stack.

Tidak. Definisi service hanya dipakai untuk membangun YAML di halaman ini. Tidak disimpan, diunggah, atau dibagikan.

Alat Terkait

Alat ini tersedia dalam bahasa lain