Yerel Geliştirme için Docker Compose
Go hizmetini PostgreSQL ve Redis'e bağlama
Yerel Geliştirme için Docker Compose, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Go Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Go Academy kursu toplamda 4 dersten oluşur.
Docker Compose neden kullanılır?
Docker Compose, yerel geliştirme için birden çok kapsayıcıyı (uygulama, veritabanı, önbellek, ileti aracısı) düzenler ve hizmetleri elle kurmadan üretim benzeri bir ortamı yeniden oluşturur.
docker-compose.yml yapısı
Hizmetleri, ağları ve depolama birimlerini bir YAML dosyasında tanımlayın:
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:Air ile canlı yeniden yükleme
Geliştirme sırasında canlı yeniden yükleme için github.com/air-verse/air kullanın. Kaynak kodunu kapsayıcıya bağlayın ve ikili dosya yerine Air çalıştırın:
app:
volumes:
- .:/app
command: airSağlık denetimleri
depends_on öğesinin veritabanı yalnızca başlatılmış değil, gerçekten hazır olana kadar beklemesi için sağlık denetimleri tanımlayın:
db:
healthcheck:
test: ["CMD-SHELL", "pg_isready -U app"]
interval: 5s
timeout: 3s
retries: 5
app:
depends_on:
db:
condition: service_healthyOrtam için geçersiz kılmalar
Yerel ortama özgü ayarlar için otomatik olarak birleştirilen docker-compose.override.yml dosyasını kullanın; böylece temel dosya CI için temiz kalır:
# docker-compose.override.yml
services:
app:
volumes: [".:/app"] # source mount for live reloadAdlandırılmış ağlar
Hizmetleri, hizmet adına göre DNS tabanlı hizmet keşfi sağlamak üzere ortak bir özel ağa yerleştirin:
networks:
backend:
driver: bridge
services:
app:
networks: [backend]
db:
networks: [backend]Ortam dosyaları
Gizli bilgileri YAML dışında tutarak .env dosyalarını kapsayıcıya yüklemek için env_file anahtarını kullanın:
app:
env_file: .env.localKomutları çalıştırma
Yaygın Compose komutları:
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 containerVeritabanını başlangıç verileriyle doldurma
SQL başlangıç verisi dosyalarını postgres imajındaki /docker-entrypoint-initdb.d dizinine bağlayın — bunlar ilk kapsayıcı oluşturulduğunda çalıştırılır:
db:
volumes:
- ./migrations:/docker-entrypoint-initdb.dProfiller
İsteğe bağlı hizmetleri (örneğin bir izleme yığını) yalnızca gerektiğinde başlatmak için Compose profillerini kullanın:
services:
grafana:
profiles: ["monitoring"]CI'da Compose
CI'da tümleştirme testlerini Compose ile gerçek hizmetlere karşı çalıştırın. GitHub Actions, Docker Compose'u yerel olarak destekler; hizmetlerin hazır olmasını beklemek için sağlık denetimlerini kullanın.
Hızlı Kontrol
Docker Compose'ta uygulama kapsayıcısının veritabanı hazır olana kadar beklemesini nasıl sağlarsınız?
Özet: Docker Compose
Temel noktalar:
- docker-compose.yml tüm hizmetleri, ağları ve depolama birimlerini tanımlar
- Hizmetin hazır olması için depends_on ve sağlık denetimi
- Yerel geliştirme ayarları için geçersiz kılma dosyaları; gizli bilgiler için env_file
- Canlı yeniden yükleme için Air; kaynağı bir depolama birimi olarak bağlayın
Sıkça Sorulan Sorular
“Yerel Geliştirme için Docker Compose” dersi ücretsiz mi?
Evet — “Yerel Geliştirme için Docker Compose” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Go Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Go Academy kursu toplamda 4 dersten oluşur.
“Yerel Geliştirme için Docker Compose” dersinde ne öğreneceğim?
Go hizmetini PostgreSQL ve Redis'e bağlama Go Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Go Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Go Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Yerel Geliştirme için Docker Compose” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Go Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Go Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Go için Çok Aşamalı Docker Derlemeleri
- Ortam Yapılandırması ve Gizli Bilgiler
- Yerel Geliştirme için Docker Compose
- Sağlık Denetimleri ve Üretim Ayarları