Go Academy · Pelajaran

Docker Compose untuk Pengembangan Lokal

Menghubungkan layanan Go dengan PostgreSQL dan Redis

Pelajaran 3 dari 413 langkah

Docker Compose untuk Pengembangan Lokal adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Go Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Go Academy mencakup 4 pelajaran total.

Mengapa Docker Compose?

Docker Compose mengatur beberapa kontainer (aplikasi, basis data, cache, perantara pesan) untuk pengembangan lokal, sehingga menghasilkan lingkungan yang mirip produksi tanpa penyiapan layanan secara manual.

Struktur docker-compose.yml

Tentukan layanan, jaringan, dan volume dalam berkas YAML:

services:
  app:
    build: .
    ports: ["8080:8080"]
    environment:
      - DATABASE_URL=postgres://app:pass@db/mydb
    depends_on: [db]
  db:
    image: postgres:15
    environment:
      POSTGRES_USER: app
      POSTGRES_PASSWORD: pass
      POSTGRES_DB: mydb
    volumes:
      - pgdata:/var/lib/postgresql/data
volumes:
  pgdata:

Muat ulang langsung dengan Air

Gunakan github.com/air-verse/air untuk memuat ulang secara langsung selama pengembangan. Pasang kode sumber ke dalam kontainer dan jalankan air, bukan berkas biner:

app:
  volumes:
    - .:/app
  command: air

Pemeriksaan kesehatan

Tentukan pemeriksaan kesehatan agar depends_on menunggu basis data benar-benar siap, bukan sekadar sudah dimulai:

db:
  healthcheck:
    test: ["CMD-SHELL", "pg_isready -U app"]
    interval: 5s
    timeout: 3s
    retries: 5
app:
  depends_on:
    db:
      condition: service_healthy

Penggantian untuk lingkungan

Gunakan docker-compose.override.yml (yang digabungkan secara otomatis) untuk pengaturan khusus lokal, sehingga berkas dasar tetap bersih untuk CI:

# docker-compose.override.yml
services:
  app:
    volumes: [".:/app"]  # source mount for live reload

Jaringan bernama

Tempatkan layanan pada jaringan khusus bersama untuk penemuan layanan berbasis DNS menggunakan nama layanan:

networks:
  backend:
    driver: bridge
services:
  app:
    networks: [backend]
  db:
    networks: [backend]

Berkas lingkungan

Gunakan kunci env_file untuk memuat berkas .env ke dalam kontainer, sehingga rahasia tidak perlu dimasukkan ke dalam YAML:

app:
  env_file: .env.local

Menjalankan perintah

Perintah Compose yang umum:

docker compose up -d      # start in background
docker compose down -v    # stop and remove volumes
docker compose logs -f app # stream app logs
docker compose exec db psql -U app mydb # run in container

Mengisi basis data awal

Pasang berkas seed SQL ke dalam direktori /docker-entrypoint-initdb.d pada image postgres—berkas tersebut dijalankan saat kontainer pertama kali dibuat:

db:
  volumes:
    - ./migrations:/docker-entrypoint-initdb.d

Profil

Gunakan profil Compose untuk memulai layanan opsional (misalnya tumpukan pemantauan) hanya saat diperlukan:

services:
  grafana:
    profiles: ["monitoring"]

Compose dalam CI

Jalankan pengujian integrasi terhadap layanan nyata dalam CI menggunakan Compose. GitHub Actions mendukung Docker Compose secara bawaan; gunakan pemeriksaan kesehatan untuk menunggu hingga layanan siap.

Pemeriksaan Singkat

Bagaimana cara memastikan kontainer aplikasi menunggu hingga basis data siap di Docker Compose?

Ringkasan: Docker Compose

Poin penting:

  • docker-compose.yml mendefinisikan semua layanan, jaringan, dan volume
  • depends_on + healthcheck untuk kesiapan layanan
  • Berkas penggantian untuk pengaturan pengembangan lokal; env_file untuk rahasia
  • Air untuk memuat ulang secara langsung; pasang kode sumber sebagai volume
Gratis untuk memulai

Belajar Go dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
51
Pelajaran
203

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Docker Compose untuk Pengembangan Lokal” gratis?

Ya — teks lengkap “Docker Compose untuk Pengembangan Lokal” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Go Academy, upgrade ke CoddyKit PRO. Kursus Go Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Docker Compose untuk Pengembangan Lokal”?

Menghubungkan layanan Go dengan PostgreSQL dan Redis Kamu berlatih Go Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Go Academy?

Tidak diperlukan pengalaman sebelumnya. Go Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Docker Compose untuk Pengembangan Lokal” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Go Academy ini?

Ya. Setiap pelajaran Go Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Build Docker Multitahap untuk Go
  2. Konfigurasi Lingkungan dan Rahasia
  3. Docker Compose untuk Pengembangan Lokal
  4. Pemeriksaan Kesehatan dan Penyetelan Produksi
← Kembali ke Go Academy